在私有版本的Python中安装setuptools

7 投票
5 回答
12158 浏览
提问于 2025-04-16 02:12

这是一个新手问题,不过……

我在一个系统版本是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 个回答

2

要为特定的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
5

我比较传统,不太喜欢用 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

这在你想要临时安装到某个特定目录时很有用,之后可以用这个目录来构建特定于某个发行版的软件包。

这种工作流程对我一直很有效。

3

把 ~/python2.7/bin 加到你的 PATH 里,比如:

$ export PATH=$PATH:~/python2.7/bin
$ sh setuptools-0.6.c11-py2.7.egg

这样做之后,就可以直接使用,而不需要加前缀,因为 Python 自己会告诉 setuptools 它默认的 --prefix 是什么。

撰写回答