有很多方法可以处理这个问题。
选项 0
允许从 virtualenv 中访问全局站点包。在创建虚拟环境时将--system-site-packages
选项传递给。virtualenv
或者,使用toggleglobalsitepackages
命令(来自virtualenvwrapper)允许访问全局站点包。
(test1)$ toggleglobalsitepackages
Enabled global site-packages
(test1)$ python -c "import pysvn; print 'ok'"
ok
(test1)$ toggleglobalsitepackages
Disabled global site-packages
(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named pysvn
选项1
使用 easy_install 使用二进制安装程序将软件包安装到 virtualenv 中。例如,在 Windows 上,该过程可能如下所示:
- 下载二进制安装程序文件。在此示例中,我们将其命名为 example_installer.msi(或 example_installer.exe)
- 激活 virtualenv(我在 Windows 上使用virtualenvwrapper-win )
easy_install example_installer.msi
通过双击并以 gui 模式运行安装程序(然后使用 Windows 添加/删除程序控制面板卸载),验证您是否可以在站点范围内安装安装程序。如果您可以在站点范围内安装它,那么 easy_install 可能会将其安装到 virtualenv 中。
但是,pysvn 二进制安装程序的结构不适合easy_install。如果您使用 Windows pysvn 二进制安装程序尝试此操作,则会收到此错误:
error: py27-pysvn-svn185-1.7.9-1572.exe is not a valid distutils Windows .exe
选项 2
使用virtualenvwrapperadd2virtualenv
中的命令。这会在 virtualenv 的 site-packages 目录中添加一个 .pth 文件,从而使 virtualenv 可以访问指定的目录。
请注意,您必须指定父目录,而不是特定的包。也就是说,而不是
add2virtualenv /usr/lib/python2.7/dist-packages/pysvn
它应该是
add2virtualenv /usr/lib/python2.7/dist-packages
看到这个问题:add2virtualenv (virtualenv wrapper) does not work with scipy
要查找安装包的目录,请执行以下操作:
$ python
>>> import pysvn
>>> pysvn.__file__
'/usr/lib/python2.7/dist-packages/pysvn/__init__.pyc'
问题是,这包括指定目录中的所有包,而不仅仅是 pysvn。因此,它具有与 相同的缺点toggleglobalsitepackages
。
选项 3
将安装目录符号链接到 virtualenv 的站点包。
进入 virtualenv 的 site-packages 目录的一种便捷方法是使用virtualenvwrapper 的 cdsitepackages
命令
cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn
概括
在 Windows 上,尝试选项 1(来自二进制安装程序的 easy_install)。如果失败,请全局安装并允许 virtualenv 通过使用virtualenvwrapper-win 的 toggleglobalsitepackages
命令或将--system-site-packages
选项传递给 virtualenv 来访问它。
在支持符号链接的系统上,例如 Linux 和 OS X,使用选项 3。它允许您访问您需要的特定包,而不允许访问整个全局站点包。