安装pip失败

3 投票
1 回答
10137 浏览
提问于 2025-04-18 13:39

我正在使用红帽5.3系统。

我用以下命令把Python更新到了2.7版本(之前是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

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版本。

撰写回答