首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在虚拟环境中安装pysvn

在虚拟环境中安装pysvn
EN

Stack Overflow用户
提问于 2014-09-22 22:33:50
回答 1查看 7.5K关注 0票数 9

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

代码语言:javascript
复制
$ sudo apt-get install python-svn

或者,在Windows上,我可以使用.exe安装程序在整个站点安装.

在虚拟环境之外,我可以这样做

代码语言:javascript
复制
$ python -c "import pysvn; print 'ok'"
ok

现在,我创建了一个虚拟use (我使用了来自mkvirtualenv包的虚拟包装器命令)

代码语言:javascript
复制
$ mkvirtualenv test1

但是由于virtualenv默认不导入全局站点包,所以我不能在这个虚拟站点中使用pysvn。

代码语言:javascript
复制
(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named pysvn

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-22 22:33:50

有很多方法来处理这个问题。

备选方案0

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

或者,使用toggleglobalsitepackages命令(从虚拟包装器)允许访问全局站点包。

代码语言:javascript
复制
(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上,进程可能如下所示:

  1. 下载二进制安装程序文件。在本例中,让我们将其称为example_installer.msi (或example_installer.exe)
  2. 激活virtualenv (我在Windows上使用虚拟包装器-胜利 )
  3. easy_install example_installer.msi

通过双击并以gui模式运行安装程序(然后使用Windows /Remove程序控制面板卸载),验证可以在整个安装程序范围内安装。如果您可以在站点范围内安装它,那么easy_install可能可以将它安装到虚拟环境中。

但是,pysvn二进制安装程序的结构不适合easy_install。如果在Windows pysvn二进制安装程序中尝试此操作,则会得到以下错误:

代码语言:javascript
复制
error: py27-pysvn-svn185-1.7.9-1572.exe is not a valid distutils Windows .exe

选项2

使用来自add2virtualenv虚拟包装器命令。这将向virtualenv的站点包目录添加一个.pth文件,该目录允许虚拟服务器访问指定的目录。

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

代码语言:javascript
复制
add2virtualenv /usr/lib/python2.7/dist-packages/pysvn

它应该是

代码语言:javascript
复制
add2virtualenv /usr/lib/python2.7/dist-packages

参见这个问题:add2virtualenv (virtualenv包装器)不适用于with。

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

代码语言:javascript
复制
$ python
>>> import pysvn
>>> pysvn.__file__
'/usr/lib/python2.7/dist-packages/pysvn/__init__.pyc'

问题是,这包括指定目录中的所有包,而不仅仅是pysvn。因此,它具有与toggleglobalsitepackages相同的缺点。

选项3

Symlink将安装目录链接到虚拟服务器的站点包。

访问virtualenv站点包目录的一种方便方法是使用虚拟包装器 cdsitepackages命令。

代码语言:javascript
复制
cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn

摘要

在Windows上,尝试选项1(二进制安装程序中的easy_install)。如果失败,请全局安装,并允许虚拟主机使用虚拟包装器-胜利 toggleglobalsitepackages命令或将--system-site-packages选项传递给virtualenv来访问它。

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25984095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档