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 list
或 pip freeze
都显示新模块。但是当我将模块添加到我的 INSTALLED_APPS 并尝试将其导入我的 models.py 文件时,Django 找不到它。
当我打字时
which python
和 which 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
资源:
我相信对于有经验的人来说这很简单。我正在通过 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 list
或 pip freeze
都显示新模块。但是当我将模块添加到我的 INSTALLED_APPS 并尝试将其导入我的 models.py 文件时,Django 找不到它。
当我打字时
which python
和 which 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
资源: