我可以使用二进制包在站点范围内安装pysvn。例如,在Ubuntu中:
$ sudo apt-get install python-svn
或者,在Windows上,我可以使用.exe安装程序在站点范围内安装。
在virtualenv之外,我可以做到这一点
$ python -c "import pysvn; print 'ok'"
ok
现在我制作了一个virtualenv(我使用virtualenvwrapper包中的mkvirtualenv
命令)
$ mkvirtualenv test1
但是由于virtualenv默认不导入全局网站包,我不能在这个virtualenv中使用pysvn。
(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named pysvn
如何在不启用全局网站包的情况下访问virtualenv中的pysvn?
答案 0 :(得分:8)
有很多方法可以解决这个问题。
允许从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
使用easy_install使用二进制安装程序将软件包安装到virtualenv中。例如,在Windows上,该过程可能如下所示:
easy_install example_installer.msi
通过在gui模式下双击并运行安装程序(然后使用Windows“添加/删除程序”控制面板卸载),验证是否可以在站点范围内安装安装程序。如果您可以在站点范围内安装它,那么easy_install可能会将其安装到virtualenv中。
但是,对于easy_install,pysvn二进制安装程序的结构不正确。如果您使用Windows pysvn二进制安装程序尝试此操作,则会出现此错误:
error: py27-pysvn-svn185-1.7.9-1572.exe is not a valid distutils Windows .exe
使用virtualenvwrapper中的add2virtualenv
命令。这会将一个.pth文件添加到virtualenv的site-packages目录中,该目录允许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
具有相同的缺点。
将安装目录符号链接到virtualenv的site-packages。
访问virtualenv的site-packages目录的便捷方法是使用virtualenvwrapper's cdsitepackages
命令
cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn
在Windows上,尝试选项1(从二进制安装程序中轻松安装)。如果失败,请全局安装并允许virtualenv使用virtualenvwrapper-win's toggleglobalsitepackages
命令或将--system-site-packages
选项传递给virtualenv来访问它。
在支持符号链接的系统上,例如Linux和OS X,使用选项3.它允许您访问所需的特定软件包,而无需访问整个全局站点软件包。