安装pip失败
我正在使用红帽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 个回答
在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版本。