安装pip失败。

3

我正在使用Redhat 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。 - okoboko
那么我该怎么做呢?@user3689902 - FishGel
尝试运行 yum clean all,然后再尝试安装 pip - S.Ali
安装 pip,通过 yum install python-pip 命令进行安装。我在第一条评论中提到了清除 yum 缓存后再安装 pip。就这样。 - S.Ali
如果您没有通过yum或RPM安装Python本身,请不要使用yum安装Python相关内容! - ThiefMaster
1个回答

8
在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 && 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环境(例如,在$HOME/.bashrc中添加)将/usr/local/bin/添加到$PATH;或者您可以作为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的选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接