--no-site-packages
参数,virtualenv将会把位于/usr/local/lib/python2.7/site-packages
(Python 2.7)中的包与新创建的虚拟环境连接起来。在Ubuntu 12.04 LTS上,我有三个位置可以安装Python 2.7的软件包(使用默认的Ubuntu提供的Python 2.7安装方式):
/usr/lib/python2.7/dist-packages
:这里安装了我全局的ipython、scipy、numpy、matplotlib等包,如果它们不是通过scipy stack提供的,则单独安装这些包及其依赖关系将非常困难和耗时。/usr/local/lib/python2.7/site-packages
:这是空的,除非我从源代码安装软件包,否则我认为它会一直保持为空。/usr/local/lib/python2.7/dist-packages
:这里有非常重要的天文本地包,特别是那些与PyRAF、STScI等相关的包,如果它们不是通过虚拟环境提供的,则单独安装这些包及其依赖关系将非常困难和耗时。
/usr/lib/python2.7/site-packages
这样的全局目录在我的系统上不存在。此外,我的ipython、scipy等全局安装让我能够在不必每次激活虚拟环境的情况下即时使用这些包。当然,现在我想使用virtualenv在用户主目录下创建一个虚拟环境,并为我的未来项目激活该环境。但是,我希望在创建时该虚拟环境可以链接/复制上述列表中(1)和(3)位置中的所有软件包。主要原因是我不想为此(以及可能的其他)虚拟环境重新安装ipython、scipy、astro-packages等软件包(如果可能的话)。
以下是我的问题:
dist-packages
目录中的软件包?dist-packages
目录中全局安装的scipy,ipython等时,这是否也会更新/更改我的虚拟环境使用的软件包(它们最初是在virtualenv创建期间获取的)?/usr/local/lib/python2.7/dist-packages
还是/usr/local/lib/python2.7/site-packages
中?提前感谢您的帮助!
/home/userX/envY/lib/python2.7/site-packages
中创建 dist-packages.pth。我目前选择了后一种方法,因为它更明确地解释了为什么这个特定的虚拟环境可以访问全局的 dist-packages 目录,而不是通过 .bashrc 中的 "全局"PYTHONPATH
环境变量。 - quantumflash