PyCharm Pro ImportError (Disco Dingo) Django 2.0


0

Emissão foi encontrado no bate-papo, estou usando a versão errada do virtualenv que requer a desinstalação.

Enquanto eu estava tentando configurar um Django Project. No manage.py:

ImportError("Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? `Did you "`
"forget to activate a virtual environment?"

) from exc

Atualização: eu corri virtualenv cmdem Pycharm Pro terminal Este veio:

You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Qualquer solução?
Informações adicionais:
Pip3foi usado na instalação e virtualenvestá instalado.

Django MCVE:

def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Example.settings')
try:
    from django.core.management import execute_from_command_line
except ImportError as exc:
    raise ImportError(
        "Couldn't import Django. Are you sure it's installed and "
        "available on your PYTHONPATH environment variable? Did you "
        "forget to activate a virtual environment?"
    ) from exc
execute_from_command_line(sys.argv)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Example.settings')
application = get_wsgi_application()
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

ROOT_URLCONF = 'Example.urls'

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
    ,
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},

]

WSGI_APPLICATION = 'Example.wsgi.application'

1
Seu PyCharm está configurado para usar um virtualenv dentro do diretório do projeto ou está usando as bibliotecas do 'sistema'? Se as bibliotecas do sistema, você instalou os requisitos do Django a partir do PyPI em seu ambiente sudo pip3 installe assim por diante ?
Thomas Ward

1
Verificando o projeto, o novo ambiente usando o virtualnev está marcado para python e Django, ambos dentro do diretório do projeto.
SeemsToBeStuck

Indo para o Pycharm Pro Project Interrupter. Eu só tinha os dois pacotes instalados (não Django ou virtualnev). Preciso instalar mais alguns pacotes.
SeemsToBeStuck

Sim. Você precisará entrar no 'Terminal' do PyCharm Pro, que o levará ao seu venv. Então instale o Django e seus requisitos.
Thomas Ward

Eu estava seguindo as instruções e as instalei do projeto interperter.
SeemsToBeStuck

Respostas:


1

from django.core.management import execute_from_command_line funciona perfeitamente e você está recebendo o seguinte erro ao usar o interpretador python3.7 no Ubuntu 19.04:

You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Eu recomendo testar um programa Python "hello world" simples no virtualenv, porque parece que o problema está no virtualenv, não no código Python. Isso pode ser por dois motivos:

  1. O virtualenv está bagunçado e deve ser recriado do zero.
  2. Se você criou os mesmos dois virtualenvs, um no PyCharm e outro no diretório inicial e um programa "olá mundo" funciona apenas no virtualenv que não foi criado no PyCharm, é possível que o virtualenv esteja OK, mas não está configurado corretamente no PyCharm.

A captura de tela a seguir mostra minha estrutura de projeto de um projeto "hello world" simples no PyCharm, chamado hello-world-1 . Meu arquivo de origem é nomeado hello-world-1.py . Corri esse código clicando no triângulo verde ▶ marcado pelo cursor do mouse na captura de tela abaixo.

projeto hello-world-1

Todos os arquivos que você vê na árvore de diretórios hello-world-1 foram criados automaticamente pelo PyCharm quando criei o projeto, exceto pelo arquivo hello-world-1.py que criei posteriormente no PyCharm. Não configurei o virtualenv quando criei o projeto. Aceitei todos os padrões e cliquei em OK .

O pip3 foi criado automaticamente pelo PyCharm no diretório bin, caso eu queira instalar algum pacote Python para o meu programa python3 .pip3 install <package name>

A próxima coisa que fiz foi editar meu código "olá mundo" para que fique assim:

print("Hello world!")
from django.core.management import execute_from_command_line  

Este código também foi executado sem erros, mostrando que importou o Django, que é instalado globalmente por sudo apt install python3-django, para o virtualenv sem nenhuma configuração adicional necessária.

O objetivo do diretório venv é fornecer um diretório de destino para o virtualenv. venv é apenas um nome que o PyCharm usa para identificar esse diretório, mas venv pode ser alterado pelo usuário para qualquer outro nome. O objetivo do virtualenv é fornecer um ambiente seguro em área restrita, em que o usuário possa instalar com segurança os pacotes exigidos por um projeto individual. Obviamente, se os mesmos pacotes também são fornecidos pelos repositórios padrão do Ubuntu, não faz sentido mexer com o pip porque os pacotes de repositório do Ubuntu já foram verificados pelos desenvolvedores do Ubuntu.

Política do $ apt python3-django
python3-django:
  Instalado: 1: 1.11.11-1ubuntu1.5
$ python3
>>> importar django
>>> da importação do django.core.management execute_from_command_line # nenhuma mensagem de erro 
>>> exit ()

Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Thomas Ward
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.