在私有版本的Python中安装setuptools
这是一个新手问题,不过……
我在一个系统版本是2.3的主机上安装了python2.7(2.7在~/python2.7/bin/python)。我想添加一些包,比如MySQLdb,但需要setuptools。
说明上说可以用--prefix作为参数。不过,如果我这样做:
sh setuptools-0.6c11-py2.7.egg --prefix=~/python2.7/bin/python
我就会收到错误信息:
-bash-3.00$ sh setuptools-0.6c11-py2.7.egg --prefix=~/python2.7/bin/python
setuptools-0.6c11-py2.7.egg: line 3: exec: python2.7: not found
我是不是没有正确使用--prefix命令?当然,输入sh setuptools-0.6c11-py2.7.egg --help也找不到python。
我该如何明确告诉setuptools去哪里找python?还有其他我需要注意的问题吗?
5 个回答
要为特定的Python版本安装easy_install,我是从源代码安装的,并且使用了你想要安装setuptools的那个Python版本。我在安装了Python 2.5和Python 2.7的Ubuntu 11.04上使用了以下步骤。
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
tar -zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11/
sudo python2.5 setup.py build
sudo python2.5 setup.py install
下面这个命令是用来给Python 2.5安装一个模块的:
sudo easy_install-2.5 pil
这个命令是用来给Python 2.7安装一个模块的:
sudo easy_install-2.7 pil
我比较传统,不太喜欢用 eggs,通常我会下载源代码的压缩包,解压后用 setup.py 来安装。
在处理多个 Python 版本时,我通常会明确指定需要的版本,比如这样:
$ /usr/bin/python2.6 setup.py build
$ sudo /usr/bin/python2.6 setup.py install
安装时还有一种方法可以进行初步的“chroot”操作:
$ python setup.py install --root /tmp
这在你想要临时安装到某个特定目录时很有用,之后可以用这个目录来构建特定于某个发行版的软件包。
这种工作流程对我一直很有效。
把 ~/python2.7/bin 加到你的 PATH 里,比如:
$ export PATH=$PATH:~/python2.7/bin
$ sh setuptools-0.6.c11-py2.7.egg
这样做之后,就可以直接使用,而不需要加前缀,因为 Python 自己会告诉 setuptools 它默认的 --prefix 是什么。