Python 轻松安装已存在的未满足依赖项

Python 轻松安装已存在的未满足依赖项,python,pip,Python,Pip,我试图在ubuntu 14-04上使用easy\u install,但由于缺少对setuptools 3.3 $ easy_install Traceback (most recent call last): File "/usr/local/bin/easy_install", line 5, in <module> from pkg_resources import load_entry_point ... File "/usr/

我试图在ubuntu 14-04上使用
easy\u install
,但由于缺少对
setuptools 3.3

$ easy_install
Traceback (most recent call last):
  File "/usr/local/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
  ...
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 839, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'setuptools==3.3' distribution was not found and is required by the application
我查看了
easy\u install
的源代码,它非常简单

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==3.3','console_scripts','easy_install'
__requires__ = 'setuptools==3.3'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('setuptools==3.3', 'console_scripts', 'easy_install')()
    )
然后我编辑了该文件,并将所有提到的
setuptools==3.3
替换为
setuptools=17.1.1

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==17.1.1','console_scripts','easy_install'
__requires__ = 'setuptools==17.1.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('setuptools==17.1.1', 'console_scripts', 'easy_install')()
    )
它现在起作用了——但显然,这不是解决问题的正确方法

问题
  • 这是
    easy\u install
    的错误吗
  • 我是否能够升级
    easy\u install
    以解决此问题
  • 当我将
    pip
    标记添加到此问题时,我看到它被列为
    easy\u install
    的替代品。我是否可以用
    pip
    替换
    easy\u install
    ,它应该可以正常工作

我只能回答最后一个问题,但是的,在大多数情况下,pip应该完全取代easy\u install。但是,如果您需要一个模块的多个版本(例如用于测试,并且不想使用VirtualNVS)、sys.path更改或其他一些不寻常的支持,请使用easy_install:另外,我查看了easy_install的更新版本的源代码,似乎每个版本都绑定到特定的版本。升级两者应该可以解决您的依赖性问题:-这是我的/usr/bin/python#EASY-INSTALL-ENTRY-SCRIPT:'setuptools==12.2'、'console\u scripts'、'EASY\u INSTALL'requires='setuptools==12.2'从pkg导入sys\u资源导入load\u ENTRY\u point如果name='main':sys.exit(load\u ENTRY\u point('setuptools==12.2','console\u scripts','EASY\u INSTALL'))显然,您的机器上安装了两个版本的setuptools。一个是从system package manager()获得的,另一个是手动安装的。后一个阴影覆盖前一个,你会得到一个异常。@Alik我如何删除一个而保留另一个?
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==17.1.1','console_scripts','easy_install'
__requires__ = 'setuptools==17.1.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('setuptools==17.1.1', 'console_scripts', 'easy_install')()
    )