virtualenv --no-site-packages v1
cd v1\Scripts
activate.bat
python -c "import django" # - no problem here
为什么它会看到Django包?它应该给我一个导入错误,对吧?
virtualenv --no-site-packages v1
cd v1\Scripts
activate.bat
python -c "import django" # - no problem here
只需要取消设置PYTHONPATH
环境变量即可。虚拟环境的想法是您可以创建自己的环境(完全隔离或扩展默认环境),因此您不必操纵它。
正如有人注意到的那样,SO上已经有一个类似的问题。如果需要更好的解释,请阅读它。
sys.path
中存在 django
包,它就不会引发任何 ImportError
问题。django
是从哪里来的,请运行:python -c "import django; print django.__file__"
请查看Python的模块搜索路径。
更新:如评论中所指出:请注意,虚拟环境中的--no-site-packages
选项仅从sys.path
中删除标准site-packages目录。其他路径保持不变。
sys.path
)。但是找到django
所在的位置可能有助于解决包的隔离问题。--no-site-packages
只是从sys.path
中删除了标准的site-packages目录,其他所有内容仍然保留在那里。 - scoffey
PYTHONPATH
吗? - Tomasz ElendtPYTHONPATH
https://dev59.com/ZU7Sa4cB1Zd3GeqP1S-r#2963017 - jfs