virtualenv --no-site-packages对我不起作用。

6
virtualenv --no-site-packages v1

cd v1\Scripts

activate.bat

python -c "import django" # - no problem here

为什么它会看到Django包?它应该给我一个导入错误,对吧?

@j.f.:v1\Scripts\python.exe - agend
`D:\kod_django>virtualenv --no-site-packages v5New python executable in v5\Scripts\python.exe Installing setuptools.....................done.D:\kod_django>cd v5\ScriptsD:\kod_django\v5\Scripts>activate.bat(v5) D:\kod_django\v5\Scripts>python -c "import sys; print sys.executable"D:\kod_django\v5\Scripts\python.exe ` - agend
2
你改过 PYTHONPATH 吗? - Tomasz Elendt
1
相关:PYTHONPATH https://dev59.com/ZU7Sa4cB1Zd3GeqP1S-r#2963017 - jfs
我有一个类似的问题,而且问题与PYTHONPATH无关,似乎是Windows忽略了PATH变量。目前我还没有解决方法。 - Kylotan
显示剩余6条评论
2个回答

9

只需要取消设置PYTHONPATH环境变量即可。虚拟环境的想法是您可以创建自己的环境(完全隔离或扩展默认环境),因此您不必操纵它。

正如有人注意到的那样,SO上已经有一个类似的问题。如果需要更好的解释,请阅读它。


2
只要在 sys.path 中存在 django 包,它就不会引发任何 ImportError 问题。
如果你想知道 django 是从哪里来的,请运行:
python -c "import django; print django.__file__"

请查看Python的模块搜索路径

更新:如评论中所指出:请注意,虚拟环境中的--no-site-packages选项仅从sys.path中删除标准site-packages目录。其他路径保持不变。


是的,我知道它来自某个地方,但在激活虚拟环境后我不想看到它 - 我该怎么办?我需要手动设置我的Python/系统路径吗?我原本期望virtualenv会为我完成这些工作。 - agend
4
是的,virtualenv会修改模块搜索路径(sys.path)。但是找到django所在的位置可能有助于解决包的隔离问题。--no-site-packages只是从sys.path中删除了标准的site-packages目录,其他所有内容仍然保留在那里。 - scoffey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接