Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在virtualenv中安装pysvn_Python_Virtualenv_Pysvn - Fatal编程技术网

Python 在virtualenv中安装pysvn

Python 在virtualenv中安装pysvn,python,virtualenv,pysvn,Python,Virtualenv,Pysvn,我可以使用二进制软件包在站点范围内安装pysvn。例如,在Ubuntu中: $sudo apt get install python svn 或者,在Windows上,我可以使用.exe安装程序在站点范围内安装 在虚拟电视之外,我可以做到这一点 $python-c“导入pysvn;打印“确定” 好啊 现在我制作一个virtualenv(我使用包中的mkvirtualenv命令) $mkvirtualenv test1 但由于virtualenv默认不导入全局站点包,因此我无法在此virtu

我可以使用二进制软件包在站点范围内安装pysvn。例如,在Ubuntu中:

$sudo apt get install python svn
或者,在Windows上,我可以使用.exe安装程序在站点范围内安装

在虚拟电视之外,我可以做到这一点

$python-c“导入pysvn;打印“确定”
好啊
现在我制作一个virtualenv(我使用包中的
mkvirtualenv
命令)

$mkvirtualenv test1
但由于virtualenv默认不导入全局站点包,因此我无法在此virtualenv中使用pysvn

(test1)$python-c“导入pysvn;打印‘确定’”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为pysvn的模块

如何在不启用全局站点包的情况下访问virtualenv中的pysvn?

有多种方法可以处理此问题

选项0 允许从virtualenv中访问全局站点包。创建虚拟环境时,将
--system site packages
选项传递给
virtualenv

或者,使用
toggleglobalsitepackages
命令(from)允许访问全局站点包

(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
选择2 使用来自的
add2virtualenv
命令。这会将一个.pth文件添加到virtualenv的site packages目录中,从而使virtualenv能够访问指定的目录

请注意,您必须指定父目录,而不是特定的包。也就是说,而不是

add2virtualenv /usr/lib/python2.7/dist-packages/pysvn
应该是

add2virtualenv /usr/lib/python2.7/dist-packages
见这个问题:

要查找安装包的目录,请执行以下操作:

$ python
>>> import pysvn
>>> pysvn.__file__
'/usr/lib/python2.7/dist-packages/pysvn/__init__.pyc'
问题是,这包括指定目录中的所有包,而不仅仅是pysvn。因此,它与切换GlobalSitePackages具有相同的缺点

选择3 将中的安装目录符号链接到virtualenv的站点包

访问virtualenv的site packages目录的方便方法是使用
cdsitepackages
命令

cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn
总结 在Windows上,尝试选项1(从二进制安装程序轻松安装)。如果失败,请使用
toggleglobalsitepackages
命令,或将
--系统站点软件包
选项传递给virtualenv,全局安装并允许virtualenv访问它


在支持符号链接的系统上,如Linux和OS X,请使用选项3。它允许您访问所需的特定软件包,而不允许访问整个全局站点软件包。

但是,本机依赖项的最大问题之一,就是不能在setup.py或requirements.txt中以任何有意义的方式指定依赖项,以便pip或其他创建virtualenv的东西可以实际安装本机依赖项。因此,这对包装/分发没有帮助。尽管如此,至少在实现开发隔离方面做了一个很好的总结。新的分发格式旨在使使用pip安装二进制依赖项变得更容易。Windows等效于选项3中的symlink命令:`mklink/d pysvn C:\Python27\Lib\site packages\pysvn\`您可能需要在命令提示符下成为管理员才能运行该命令指挥部。
cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn