Django-admin указывает за пределы virtualenv

Я инициализировал виртуальную среду с помощью команды 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?

Jus проверил мой $PATH внутри venv, и он правильно указывает на venv как на первый каталог. В env/bin есть django-admin со строкой shebang, правильно указывающей на venv ...

Morten 27.11.2018 16:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
765
1

Ответы 1

Итак, Django был установлен на системном уровне, а вы проверили, что команда python относится к вашей виртуальной среде. Бьюсь об заклад, это проблема с pip. Вы можете проверить, что он находится под <path to project>/bin и правильно используется при выполнении

(django_project) $ pip install django

Попробуй бежать

which pip

с включенным и отключенным Venv, чтобы увидеть, какой пункт используется в каждом случае

Спасибо, Антвейн. Я не думаю, что на этот раз django был установлен во всей системе. which pip правильно указывает на venv, когда он активен, и на систему, когда он не активен. Я также вижу, что django установлен в папке venv / bin.

Morten 27.11.2018 16:53

В таком случае вы должны понимать, почему исполняемый файл django-admin был скопирован в / usr / local / bin / django-admin. Возможно, он был установлен из диспетчера пакетов ОС (предыдущая установка?). Можете ли вы попробовать pip uninstall django и проверить список файлов, которые будут удалены, чтобы увидеть, пытается ли эта команда что-то изменить на системном уровне? Кроме того, какому пользователю принадлежит /usr/local/bin/django-admin?

Antwane 27.11.2018 16:57

Когда я пишу в своей последней редакции, я думаю, что исполняемые файлы django-admin в /usr/local/bin/ - это остатки от предыдущей установки, когда вы пишете. Я удалил их, и это решило проблему для меня. Я не вижу владельца, поскольку удалил их, но уверен, что это был я.

Morten 27.11.2018 17:06

Другие вопросы по теме