【问题标题】:Install pip failed安装 pip 失败
【发布时间】:2014-09-07 21:02:58
【问题描述】:

我使用的是红帽 5.3

我使用以下命令将 python 更新到 2.7。 (更新前是python 2.4)

# xz -d Python-2.7.6.tar.xz
# tar xvf Python-2.7.6.tar
# cd Python-2.7.6/
# ./configure 
# make && make install

然后我安装了 python-setuptools

# yum install python-setuptools

然后我安装 pip 打印错误

         ^
SyntaxError: invalid syntax
  File "/usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg/pip/_vendor/colorama/__init__.py", line 2
    from .initialise import init, deinit, reinit
         ^
SyntaxError: invalid syntax
  File "/usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg/pip/_vendor/colorama/winterm.py", line 2
    from . import win32
         ^
SyntaxError: invalid syntax
Adding pip 1.5.6 to easy-install.pth file
Installing pip script to /usr/bin
Installing pip2 script to /usr/bin
Installing pip2.4 script to /usr/bin

Installed /usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg
Processing dependencies for pip

然后我运行命令 pip ,它会打印以下错误:

# pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2603, in <module>
  File "/usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 666, in require
  File "/usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 565, in resolve
pkg_resources.DistributionNotFound: pip==1.5.6

我尝试卸载它,它告诉我:

[root@linkea-dev-srv1 /]# yum remove pip
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Setting up Remove Process
No Match for argument: pip
Loading mirror speeds from cached hostfile
No Packages marked for removal
You have new mail in /var/spool/mail/root

所以我尝试通过 python get-pip.py 重新安装 pip。 它也有错误。

# python get-pip.py 
Traceback (most recent call last):
  File "get-pip.py", line 17474, in <module>
    main()
  File "get-pip.py", line 17466, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 17406, in bootstrap
    import pip
  File "/tmp/tmpB9jhvw/pip.zip/pip/__init__.py", line 9, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/log.py", line 9, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/_vendor/colorama/__init__.py", line 2, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/_vendor/colorama/initialise.py", line 5, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/_vendor/colorama/ansitowin32.py", line 6, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/_vendor/colorama/winterm.py", line 2, in <module>
  File "/tmp/tmpB9jhvw/pip.zip/pip/_vendor/colorama/win32.py", line 7, in <module>
  File "/usr/local/lib/python2.7/ctypes/__init__.py", line 10, in <module>
    from _ctypes import Union, Structure, Array
ImportError: No module named _ctypes

【问题讨论】:

  • 您似乎从两个不同的位置引用 python/usr/lib/python2.4//usr/local/lib/python2.7/。所以,pip 是为 python2.4 而不是 python2.7 安装的。
  • 那我该怎么办? @user3689902
  • 尝试yum clean all 然后尝试安装pip
  • install pip,通过 yum install python-pip,我发布了第一条评论,先清理你的 yum 缓存,然后再安装 pip。就是这样
  • 如果您没有通过 yum 或 RPM 安装 python 本身,请不要使用yum 安装 python 东西!

标签: python linux python-2.7 pip yum


【解决方案1】:

在 RedHat(包括 Fedora/CentOS)上升级 Python 时应该非常小心,因为大多数系统应用程序都依赖于 Python 的捆绑版本。 yum 尤其如此,它依赖于与操作系统捆绑在一起的 Python 版本。

简而言之 - 如果你在 RedHat/CentOS/Fedora 上升级 Python 版本,yum 将无法正常工作

要在这些发行版上安装不同版本的 Python,您有两个主要选择。一种是找人发布了一个rpm,下载一个安装;但是您可能必须自己处理依赖关系。

另一个(更简单)的选择是下载 Python 的源代码,编译然后单独安装(使用altinstall)。

您需要先安装以下软件包:

  • yum groupinstall "Development tools"
  • yum install zlib-devel bzip2-devel openssl-devel ncurses-devel

接下来,下载源代码并解压。在撰写本文时,最新版本是 2.7.8:

  • wget "https://www.python.org/ftp/python/2.7.8/Python-2.7.8.xz"
  • tar xvf Python-2.7.8.xz
  • cd Python-2.7.8

现在您必须构建 Python 并将其安装到备用位置,其中包含以下内容:

  • ./configure --prefix=/usr/local
  • make &amp;&amp; make altinstall

完成此操作后,您将可以使用/usr/local/bin/python2.7。接下来,您需要为这个 Python 版本安装 pip 。为此,首先安装 setuptools:

  • wget "https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py"
  • /usr/local/bin/python2.7 ez_setup.py
  • /usr/local/bin/easy_install-2.7 pip

最后一步是确保您可以使用此版本的 Python。你可以通过修改你的shell的环境将/usr/local/bin/添加到你的$PATH中(例如,添加到$HOME/.bashrc中);或者您可以以 root 身份在 /usr/bin/ 中创建指向这些实用程序的符号链接。确保为他们提供特定于版本的标签:

  • ln -sf /usr/local/bin/python2.7 /usr/bin/python2.7
  • ln -sf /usr/local/bin/pip /usr/local/bin/pip2.7

这会将您的默认 Python 保留为系统版本(推荐),然后在需要时为您提供使用 2.7 的选项。

【讨论】: