“python setup.py install”没有安装在 virtualenv 中

问题描述 投票:0回答:2

我正在尝试使用

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

所以我激活了

virtualenv
并去了
setup.py
所在的位置。但是当我运行
python setup.py install
时,包及其依赖项会安装在系统 python 站点包中。

为了将它安装在 virtualenv 中,我必须像

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

编辑:

我运行了

which python
,它指向了 python 在 virtualenv 中的位置。

我用的是centos 6机器

python python-2.7 pip virtualenv setuptools
2个回答
0
投票

链接站点包

Virtualenv 可能会将其站点包目录链接到全局站点包。从手册页(我的是 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
文件是否存在来判断是否链接。如果这 not 存在,您的站点包 链接,这意味着 virtualenv 将安装并使用全局站点包,而不是像您预期的那样创建自己的副本。不幸的是,事后没有办法改变这一点。这次您需要使用
--no-site-packages
选项重新创建 virtualenv。


0
投票

如果你按照 setup.py 上的 py2.7 教程, 你会用

from distutils.core import setup

在我的 virtualenv(CENTOS 6.0 和 --no-site-packages 处于活动状态)中,它会产生同样的问题。

相反,如果你使用

from setuptools import setup

有效。

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

© www.soinside.com 2019 - 2024. All rights reserved.