【问题标题】:Django cannot find new modules, using pyenv and virtualenvDjango 找不到新模块,使用 pyenv 和 virtualenv
【发布时间】:2022-01-21 17:18:18
【问题描述】:

我相信这对于有经验的人来说非常简单。我正在通过 Wedge of Django 电子书学习 Django。

我正在使用通过 pyenv 安装的 Python 3.8.7,如下所示: pyenv install 3.8.7

然后我像这样设置了一个 virtualenv: pyenv virtualenv 3.8.7 everycheese

我在我的 repo 中激活 virtualenv,如下所示: pyenv local everycheese

环境在提示中显示为活动状态,因为它以 (everycheese) 开头。

主项目是从 Django Cookiecutter 克隆而来的 https://github.com/cookiecutter/cookiecutter-django

然后我使用 pip 从 requirements.txt 文件中安装需求。

但是 - 当我尝试添加新包时遇到了麻烦(通过将包作为新行添加到 requirements.txt 并使用 pip 再次安装)。

pip listpip freeze 都显示新模块。但是当我将模块添加到我的 INSTALLED_APPS 并尝试将其导入到我的 models.py 文件中时,Django 找不到它。

当我输入 which pythonwhich pip,它们指向不同的目录,我认为这可能是问题的一部分,但我被卡住了。

【问题讨论】:

  • @sinoroc 非常感谢!这很有意义,非常感谢您的分享。我跑了python - m pip list,模块不在那里。 python -m pip install -r requirements.txt 然后就像一个魅力。谢谢!如果您将此添加为答案,我会将其标记为已解决。干杯:D

标签: python django pip virtualenv pyenv


【解决方案1】:

在使用pip(或实际上任何其他 Python 脚本)时,确保使用哪个 Python 解释器非常重要。通常在调用pip 时使用哪个 Python 解释器是显而易见的。但有时并不清楚,脚本实际上是使用人们可能认为的不同解释器运行的。这会导致意想不到的结果和很多混乱。

因此,最好明确调用您所针对的确切 Python 解释器并告诉它运行 pip可执行模块(或任何其他可执行模块)。通常:

$ python -m pip install Something
$ # instead of 'pip install Something'
$ python3 -m pip install Something
$ # instead of 'pip3 install Something'

如果仍有疑问,甚至可以更进一步,明确地使用更明确的 Python 解释器路径:

  • /the/path/to/my/pythonX.Y -m pip
  • path/to/my/pythonX.Y -m pip
  • path/to/my/python -m pip
  • path/to/venv/bin/python -m pip
  • pythonX.Y -m pip
  • python3 -m pip
  • python -m pip

资源

【讨论】:

  • 再次感谢!好文章!它帮助我了解了问题的根本原因。
  • 对于遇到此问题的其他任何人-我以前使用 macOS 版本安装了没有 pyenv 的 python,这在我的 .bash_profile 中添加了几行,这意味着在没有 python -m pip 的情况下调用 python -m pip 使用了系统 pip 而不是 pyenv pip。通过从我的.bash_profile 中删除 PATH 修改,它删除了稍后运行覆盖时导致的任何错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 2016-05-19
  • 2015-11-07
相关资源
最近更新 更多