" python setup.py install"不在virtualenv中安装

时间:2016-01-19 10:40:57

标签: python python-2.7 pip virtualenv setuptools

我正在尝试使用setup.py中的virtualenvPython 2.7安装python包。要求是包,它的依赖应该放在virtualenv路径的site-package文件夹中。

所以我已激活virtualenv并转到setup.py所在的位置。但是当我运行python setup.py install时,程序包及其依赖项将安装在system python site-package中。

为了在virtualenv中安装它,我必须在virtualenv中指定python的位置,如<virtualenv path>/bin/python setup.py install。鉴于virtualenv已经激活,这看起来很奇怪。这是使用virtualenv中的setup.py安装的正确方法吗?如果是,那为什么呢?如果不是这样做的正确方法是什么?

编辑:

我跑了which python,它指向了virtualenv里面的python位置。

我正在使用centos 6机器。

2 个答案:

答案 0 :(得分:0)

链接的网站包

Virtualenv可能会将其site-packages目录链接到全局site-packages。从手册页(我的是1.5.2):

--no-site-packages    Don't give access to the global site-packages dir
                      to the virtual environment

在1.5.2版本中,此链接是默认的,您需要在创建环境时另行指定。在将来的版本中,此行为已切换,因此 NOT 链接是默认行为。

怎么做:

您可以通过<environment>/lib/python<ver>/no-global-site-packages.txt文件的存在来检查它是否已链接。如果存在,您的网站包 链接,这意味着virtualenv将安装并使用全局网站包,而不是像您预期的那样创建自己的副本。不幸的是,事后没有办法改变这种状况。您这次需要使用--no-site-packages选项重新创建virtualenv。

答案 1 :(得分:0)

如果您关注py2.7 tutorial on setup.py, 你会用

from distutils.core import setup

在我的virtualenv(带有--no-site-packages的CENTOS 6.0)中,它会产生同样的问题。

相反,如果您使用

from setuptools import setup

有效。

我不知道为什么。希望别人能指出来。