windows - Virtualenv 在 Windows 上不断加载全局站点包

标签 windows virtualenv

我环顾四周,发现我的问题的答案还没有让我解决它。

我想使用隔离的 virtualenv 环境,但是出于某种原因,virtualenv 在 django 的 shell 中时不断加载全局站点包...

我尝试清理 PATH 变量,直到只剩下 c:\Python26\Scripts 和 c:\Python26。然后我创建我的环境。

virtualenv --distribute --no-site-packages myproject

然后我激活 virtualenv。 PATH 现在是(不相关的变量被废弃):

PATH=E:\Development\django_projects\myproject\Scripts;C:\Panda3D-1.7.0\python;C:\Panda3D-1.7.0\bin;c:\python26\Scripts;

PYTHONPATH=C:\Panda3D-1.7.0\

到目前为止,还不错。我启动 python...

>>> import django
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: No module named django

让我们试试我确定在我的 c:\python site-packages 目录中的模块。

>>> import BeautifulSoup
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named BeautifulSoup

耶!没有全局站点包!那就去下一个吧。在命令提示符下,我键入:

django-admin.py

而且有效!但是等等...我还没有安装 Django。这怎么可能?

在此之后,它变得更奇怪了......我首先将这些添加到 virtualenv 的 activate.bat 脚本中,以便 Django 可以找到我的设置。

set PYTHONPATH=E:\Development\django_projects\myproject\
set DJANGO_SETTINGS_MODULE=settings.development

现在我启动 django-admin.py shell 和

In [1]: import BeautifulSoup
In [2]: BeautifulSoup.__file__
Out[2]: 'C:\\Python26\\lib\\site-packages\\BeautifulSoup.pyc'

这怎么可能?

灵光一现

在打字的时候,我突然明白了。 .py 是一个文件扩展名加上我的 c:\python26\python.exe 可执行文件,而不是 virtualenv 文件扩展名!

python manage.py
Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named django.core.management

呵呵。任何人都知道如何将 .py 文件扩展名耦合到我的 virtualenv 的 python 可执行文件而不是系统定义的 python 可执行文件?

最佳答案

一点点额外的 .bat 黑客可以轻松解决这个问题。我对 activate.bat 的标准添加是:

REM custom venv settings
set PYTHONPATH=%\VIRTUAL_ENV%;%\VIRTUAL_ENV%\conf;%\VIRTUAL_ENV%\apps
set DJANGO_SETTINGS_MODULE=settings

ftype Python.File=%VIRTUAL_ENV%\Scripts\python.exe %1 %*

并停用.bat

REM restore ftype
ftype Python.File=C:\tools\Python27\python.exe %1 %*

关于windows - Virtualenv 在 Windows 上不断加载全局站点包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112749/

相关文章:

c++ - Qt启动cmd.exe

windows - 从所有用户本地 AppData 中删除一个公共(public)文件夹

python - Windows 上的 VirtualEnv,pip 无法安装带有 C 扩展的包

python - 当我尝试安装 virtualenv 时,是什么导致了这个错误? IO错误 : [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'

c - 文件部分用c发送

c++ - 如何获取IStream的长度? C++

c++ - Windows 上的线程

python - jenkins pipeline virtualenv 插件 withPythonEnv

python - Flask 无法在 Raspberry Pi 上使用 Virtualenv

python - 激活virtualenv时如何不显示路径