我正在尝试使用setup.py
中的virtualenv
和Python 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机器。
答案 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
有效。
我不知道为什么。希望别人能指出来。