在virtualenv中安装Python easy_会导致setuptools错误
还有许多其他StackOverflow问题与此类似,但在每种情况下,平台不同,错误消息不同,或者解决方案无效或过时。我正在尝试设置Python2.7.6 virtualenv并在其中安装模块,但easy_install会给我错误,表明setuptools不可用。但是AFAIK easy_install是setuptools的一部分,所以这毫无意义 问题只发生在虚拟电视中。以下是我所做的:在virtualenv中安装Python easy_会导致setuptools错误,python,python-2.7,virtualenv,pip,easy-install,Python,Python 2.7,Virtualenv,Pip,Easy Install,还有许多其他StackOverflow问题与此类似,但在每种情况下,平台不同,错误消息不同,或者解决方案无效或过时。我正在尝试设置Python2.7.6 virtualenv并在其中安装模块,但easy_install会给我错误,表明setuptools不可用。但是AFAIK easy_install是setuptools的一部分,所以这毫无意义 问题只发生在虚拟电视中。以下是我所做的: 创建了一个全新的Red Hat 5虚拟机 执行了yum-y更新以获取最新资料,然后重新启动 下载Pytho
- 创建了一个全新的Red Hat 5虚拟机
- 执行了
以获取最新资料,然后重新启动yum-y更新
- 下载Python-2.7.6.tar.gz,解压缩,
/configure;制作sudo make安装
- 确认
给了我2.7.6,而python-V
也给了我2.7.6sudopython-V
wgethttps://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
- 修改了ez_setup.py,将
标志添加到wget,以解决网络中的代理服务器问题--no check certificate
sudo python ez_setup.py
sudo easy\u安装pip
sudo pip安装virtualenv
virtualenv virtpy
。virtpy/bin/activate
easy\u install elementtree
Traceback (most recent call last):
File "/home/gperrow/virtpy/bin/easy_install", line 7, in <module>
from setuptools.command.easy_install import main
File "/home/gperrow/virtpy/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 44, in <module>
from setuptools.package_index import PackageIndex
File "/home/gperrow/virtpy/lib/python2.7/site-packages/setuptools/package_index.py", line 203, in <module>
sys.version[:3], require('setuptools')[0].version
File "/usr/local/bin/scripts/pkg_resources.py", line 584, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/bin/scripts/pkg_resources.py", line 482, in resolve
raise DistributionNotFound(req) # XXX put more info here
pkg_resources.DistributionNotFound: setuptools
回溯(最近一次呼叫最后一次):
文件“/home/gperrow/virtpy/bin/easy_install”,第7行,在
从setuptools.command.easy\u安装导入主
文件“/home/gperrow/virtpy/lib/python2.7/site packages/setuptools/command/easy_install.py”,第44行,在
从setuptools.package\u索引导入PackageIndex
文件“/home/gperrow/virtpy/lib/python2.7/site packages/setuptools/package_index.py”,第203行,在
sys.version[:3],需要('setuptools')[0]。版本
文件“/usr/local/bin/scripts/pkg_resources.py”,第584行,在require中
需要=自我解析(解析需求(需求))
文件“/usr/local/bin/scripts/pkg_resources.py”,第482行,解析中
提升分配未找到(req)#XXX在此处输入更多信息
pkg_resources.DistributionNotFound:设置工具
我从一个干净的虚拟机开始,我没有做什么真正不寻常的事情,但我发现“easy_install”什么都不是。我是做错了什么,还是错过了一个或多个步骤?我不知道为什么会出现错误,但我相信有一种系统的方法可以让您干净地安装自定义Python,包括一个工作pip和virtualenv。在下面,我将描述我将使用的过程 首先,出于多种原因,保持系统的Python不变。其中之一是Linux发行版的某些部分可能取决于其默认Python的细节。你不想弄坏这些部件。另一个原因是,安装到默认位置的普通Python可能会被原始Python的剩余部分弄糊涂(发行版可能有一个不同于普通版的特定Python/dist包/站点包目录布局)。这在实践中可能是,也可能不是一个真正的问题——您可以通过不覆盖系统的Python从概念上防止这些问题。另一个论点是,不需要将Python 2.7.6安装为root用户。以非特权用户(从这里开始称为“joe”)的身份安装它,并将其放入
/opt
或其他程序中。这将是一个干净的开始
设置完自定义Python后,自己创建一个小shell脚本,例如setup.sh
,用于设置使用自定义Python版本的环境。确保调整和清洁环境。显然,这尤其会影响PATH
和PYTHONPATH
。我会确保PYTHONPATH
未设置,并且PATH
正确指向自定义安装。查看env
并尝试确定是否还有任何东西可能以意外方式配置python
。毕竟,要确保
$ command -v python
$ python -v
,被处决为乔,看右边
在正确的环境下,为自定义Python安装pip
。根据,下载并执行它:python get pip.py
。验证它是否已正确安装,以及您的环境是否仍然正确:
$ command -v pip
/CUSTOM/PYTHON/bin/pip
$ pip --version
pip 1.x.x from /CUSTOM/PYTHON/lib/python2.7/site-packages
此时,您应该确保您的环境不包含任何VIRTUALENV.*
变量(可能是由您的发行版或任何组件设置的(不太可能,但值得检查))。如果设置了任何VIRTUALENV*
变量,它很可能以意外的方式配置VIRTUALENV
。摆脱这个(未设置或更改)。然后继续,通过pip安装virtualenv
,使用新的pip
将virtualenv
安装到新的Python中。通过pip install安装virtualenv的最新开发版本也值得一试https://github.com/pypa/virtualenv/tarball/develop
创建并激活新的虚拟环境。使用命令-v pip
,验证pip
是否来自虚拟环境。然后安装自定义软件包
注意:如果可能的话,我肯定会使用
pip
将东西安装到新的虚拟环境中,而不是easy\u install
pip
很快将成为官方安装工具(它将包含在Python 3.4中)。如果出于某种原因,您确实依赖于easy\u install
,这应该是可能的(虚拟环境提供了easy\u install
命令),但为了确保您也应该通过命令-v easy\u install验证这一点,您的方法是正确的,其他答案(Jan Philip和Piotr的)也是如此,但你的问题很简单:
您使用的是旧安装的一部分
...
File "/usr/local/bin/scripts/pkg_resources.py", line 669, in require ## 584 is too old
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/bin/scripts/pkg_resources.py", line 572, in resolve ## 482 is too old
raise DistributionNotFound(req)
(virtpy)$ python -c "import pkg_resources; print pkg_resources"
<module 'pkg_resources' from '/home/you/virtpy/lib/python2.7/site-packages/pkg_resources.pyc'>
# not the obsoleted /usr/local/bin/scripts/...
scl enable python
scl enable python27 bash