Python (Windows 服务器) Virtualenv 无法识别 Django 已安装

Python (Windows Server) Virtualenv not recognizing Django is installed

我的虚拟环境拒绝识别我安装的 Django(奇怪)

我在 Windows 服务器上,安装了 Python 3.7 到我的 windows 路径中有 C:\Python37;C:\Python37\Scripts 的目录 (C:\Python37) 所以使用 Powershell 或 GitBash 时,我可以使用 python 命令。

如果我 运行 where python 它显示默认安装

我 CD 到我的 django 项目目录和 运行: python virtualenv venv 并创建了 venv 目录

然后我 运行 source venv/Scripts/activate 它会正确激活。

当我 运行 where python 它显示 venv 目录中的 exe - 这是预期的和适当的。

我 运行 pip install -r requirements.txt 和我的所有要求都正确安装。我确认它们安装了 pip freeze(全部安装正确)

一旦我这样做,我就会转到 运行 python manage.py collectstatic(在此特定实例中不需要迁移)我收到一条错误消息,指出 Django 未安装。

为了检查这一点,我的 virtualenv 仍然处于激活状态,我输入 shell (python)

如果我这样做 import django 它也说 Django 没有安装。

我不知道这里发生了什么 - python 版本似乎是正确的,激活了正确的 virtualenv - 但它仍然没有看到正确安装的 Django 安装。

想法?想法?

物有所值 - 这是解决方案和解释:

如问题中所述,一切都按预期工作 - 实际 python 命令不起作用的原因与 .bashrc 文件中的一行有关。

.bashrc 文件中有一个别名,用于将 python 设置为命令 winpty C:\Python37\python

所以当命令 python manage.py collectstatic 得到 运行 - 它正在查看 Python37 目录中的 Python 可执行文件,而不是虚拟环境 Python.

只需 运行 设置适当的 Python 即可解决此问题(例如) C:/my_project/venv/Scripts/python manage.py collectstatic

这迫使它使用虚拟环境 python 来 运行 命令,所以一切都按预期工作。