Django无法使用pyenv和virtualenv找到新模块



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

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

然后我建立了一个虚拟的,像这样:pyenv virtualenv 3.8.7 everycheese

我在我的回购中激活虚拟机,如下所示:pyenv local everycheese

环境在提示中显示为活动,因为它以(everychese(开头。

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

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

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

CCD_ 4或CCD_。但是,当我将模块添加到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

资源:

  • Brett Cannon的文章"为什么应该使用CCD_ 17">

最新更新