Django 找不到新模块,使用 pyenv 和 virtualenv

Django cannot find new modules, using pyenv and virtualenv

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

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

然后我像这样设置了一个虚拟环境: 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,它们指向不同的目录,我认为这可能是问题的一部分,但我被卡住了。

当使用 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

资源: