【问题标题】:django-admin pointing outside virtualenvdjango-admin 指向 virtualenv 之外
【发布时间】:2018-11-27 15:06:30
【问题描述】:

我已经使用 virtualenvwrapper 命令mkvirtualenv -a <path to project> django_project 初始化了一个虚拟环境。

然后我用pip install django 安装了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

我认为它应该指向我的 venv。为什么它会指向一个全局 django 管理员?如何修复它以使其适用于我未来的虚拟环境?

我在 MacOS 上使用 zsh 和 python 3.7.0。

谢谢!

编辑:命令中的错误

编辑:我意识到我没有系统范围的 Django 安装,所以我的 /usr/local/bin 中的 django-admindjango-admin.py 文件一定是早期安装的遗留物。因此我删除了它们并解决了问题。 venv 内没有任何进一步的django-admin 指向正确的 django 安装(在 venv 内)。

但是,我还是想知道,为什么命令一开始没有指向安装在venv中的Django?

【问题讨论】:

  • Jus 检查了我在 venv 中的$PATH,它正确地指向了 venv 作为第一个目录。在env/bin 中有一个 django-admin,shebang 行正确指向了 venv...

标签: django python-3.x virtualenvwrapper


【解决方案1】:

所以 Django 已经安装在系统级别,而您验证 python 命令引用您的虚拟环境。我敢打赌这是pip 的问题。您可以检查它是否在&lt;path to project&gt;/bin 下并且在您执行时正确使用

(django_project) $ pip install django

尝试运行

which pip

启用和禁用 venv 以查看每种情况下使用的 pip

【讨论】:

  • 谢谢你安特瓦内。我认为这次没有在系统范围内安装 django。 which pip 在活动时正确指向 venv,在未活动时正确指向系统。我还可以看到 django 安装在 venv/bin 文件夹中。
  • 在这种情况下,您必须了解为什么 django-admin 可执行文件被复制到 /usr/local/bin/django-admin 中。它可能是从操作系统包管理器安装的(以前的安装?)。您可以尝试pip uninstall django 并检查将要删除的文件列表,以查看此命令是否尝试在系统级别修改某些内容?另外,哪个用户拥有/usr/local/bin/django-admin
  • 正如我在最新的编辑中所写,我认为/usr/local/bin/ 中的 django-admin 可执行文件是之前安装的遗留物,正如你所写的那样。我删除了它们,它为我解决了问题。我已经删除了所有者,所以我看不到所有者,但我很确定应该是我。
猜你喜欢
  • 2020-05-07
  • 2014-06-19
  • 1970-01-01
  • 2017-12-23
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 2012-09-16
相关资源
最近更新 更多