Я инициализировал виртуальную среду с помощью команды virtualenvwrapper mkvirtualenv -a <path to project> django_project.
Затем я установил django с pip install django. Но затем, если я попытаюсь использовать django-admin, я получу:
Traceback (most recent call last):
File "/usr/local/bin/django-admin", line 7, in <module>
from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'
Теперь pip list дает мне
Package Version
---------- -------
Django 2.1.3
pip 18.1
pytz 2018.7
setuptools 40.6.2
wheel 0.32.3
python -m django --version дает
2.1.3
Если я запускаю which python, он правильно указывает на мой virtualenv, однако which django-admin дает:
/usr/local/bin/django-admin
Думаю, это должно указывать на мой венв. Почему он указывает на глобального администратора django? Как мне исправить это, чтобы он работал в моих будущих виртуальных средах?
Я использую MacOS, использую zsh и python 3.7.0.
Спасибо!
Обновлено: ошибка в команде
Обновлено: я понял, что у меня нет общесистемной установки Django, поэтому файлы django-admin и django-admin.py в моем /usr/local/bin должны быть остатками более ранней установки. Поэтому я удалил их, и это решило проблему. Без дополнительных django-admin внутри venv укажите правильную установку django (внутри venv).
Тем не менее, мне все же хотелось бы знать, почему команда вообще не указывала на Django, установленный в venv?





Итак, Django был установлен на системном уровне, а вы проверили, что команда python относится к вашей виртуальной среде. Бьюсь об заклад, это проблема с pip. Вы можете проверить, что он находится под <path to project>/bin и правильно используется при выполнении
(django_project) $ pip install django
Попробуй бежать
which pip
с включенным и отключенным Venv, чтобы увидеть, какой пункт используется в каждом случае
Спасибо, Антвейн. Я не думаю, что на этот раз django был установлен во всей системе. which pip правильно указывает на venv, когда он активен, и на систему, когда он не активен. Я также вижу, что django установлен в папке venv / bin.
В таком случае вы должны понимать, почему исполняемый файл django-admin был скопирован в / usr / local / bin / django-admin. Возможно, он был установлен из диспетчера пакетов ОС (предыдущая установка?). Можете ли вы попробовать pip uninstall django и проверить список файлов, которые будут удалены, чтобы увидеть, пытается ли эта команда что-то изменить на системном уровне? Кроме того, какому пользователю принадлежит /usr/local/bin/django-admin?
Когда я пишу в своей последней редакции, я думаю, что исполняемые файлы django-admin в /usr/local/bin/ - это остатки от предыдущей установки, когда вы пишете. Я удалил их, и это решило проблему для меня. Я не вижу владельца, поскольку удалил их, но уверен, что это был я.
Jus проверил мой
$PATHвнутри venv, и он правильно указывает на venv как на первый каталог. Вenv/binесть django-admin со строкой shebang, правильно указывающей на venv ...