我可以使用二进制包安装pysvn站点。例如,在Ubuntu中:
$ sudo apt-get install python-svn或者,在Windows上,我可以使用.exe安装程序在整个站点安装.
在虚拟环境之外,我可以这样做
$ python -c "import pysvn; print 'ok'"
ok现在,我创建了一个虚拟use (我使用了来自mkvirtualenv包的虚拟包装器命令)
$ mkvirtualenv test1但是由于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如何在不启用全局站点包的情况下访问虚拟环境中的pysvn?
发布于 2014-09-22 22:33:50
有很多方法来处理这个问题。
备选方案0
允许从虚拟环境中访问全局站点包。在创建虚拟环境时,将--system-site-packages选项传递给virtualenv。
或者,使用toggleglobalsitepackages命令(从虚拟包装器)允许访问全局站点包。
(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使用二进制安装程序将包安装到虚拟环境中。例如,在Windows上,进程可能如下所示:
easy_install example_installer.msi通过双击并以gui模式运行安装程序(然后使用Windows /Remove程序控制面板卸载),验证可以在整个安装程序范围内安装。如果您可以在站点范围内安装它,那么easy_install可能可以将它安装到虚拟环境中。
但是,pysvn二进制安装程序的结构不适合easy_install。如果在Windows pysvn二进制安装程序中尝试此操作,则会得到以下错误:
error: py27-pysvn-svn185-1.7.9-1572.exe is not a valid distutils Windows .exe选项2
使用来自add2virtualenv的虚拟包装器命令。这将向virtualenv的站点包目录添加一个.pth文件,该目录允许虚拟服务器访问指定的目录。
请注意,必须指定父目录,而不是指定特定的包。那就是,而不是
add2virtualenv /usr/lib/python2.7/dist-packages/pysvn它应该是
add2virtualenv /usr/lib/python2.7/dist-packages参见这个问题:add2virtualenv (virtualenv包装器)不适用于with。
若要查找安装包的目录,请执行以下操作:
$ python
>>> import pysvn
>>> pysvn.__file__
'/usr/lib/python2.7/dist-packages/pysvn/__init__.pyc'问题是,这包括指定目录中的所有包,而不仅仅是pysvn。因此,它具有与toggleglobalsitepackages相同的缺点。
选项3
Symlink将安装目录链接到虚拟服务器的站点包。
访问virtualenv站点包目录的一种方便方法是使用虚拟包装器 cdsitepackages命令。
cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn摘要
在Windows上,尝试选项1(二进制安装程序中的easy_install)。如果失败,请全局安装,并允许虚拟主机使用虚拟包装器-胜利 toggleglobalsitepackages命令或将--system-site-packages选项传递给virtualenv来访问它。
在支持符号链接的系统(如Linux和OS )上,使用选项3,它允许您访问所需的特定包,而不允许访问整个全局站点包。
https://stackoverflow.com/questions/25984095
复制相似问题