无法从源代码安装python包
我需要在我的 Ubuntu 10.4 32位(编辑:64位)机器上安装 PIL
(Python 图像库),而我的 Python 版本是 2.5.4 32位。
这个问题可能对其他源代码包也有帮助,比如我需要的 RPyC
、psyco
和 numpy
。
因为找不到合适的安装包,我下载了源代码,然后执行了sudo python2.5 setup.py install
。
输出结果是:
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
File "setup.py", line 9, in <module>
import glob, os, re, struct, string, sys
File "/usr/lib/python2.5/struct.py", line 30, in <module>
from _struct import Struct, error
ImportError: No module named _struct
但是
echo $PYTHONHOME
/usr
在 struct.py
文件中,有一行代码是 from _struct import Struct, error
。这部分是 Python 源代码的一部分,所以我真的很想知道我的 Python 安装出了什么问题,因为代码无法导入这个模块。
我通过以下方式安装了 py2.5.4:
./configure --prefix=/usr
make altinstall
(使用 make altinstall
,因为我需要将 Python 2.6 设置为默认解释器)
编辑:这个问题可能是因为错误地使用了 64 位平台和 32 位的 Python 2.5 导致的 :) 所以最终通过简化问题,切换到 32 位机器并将应用程序移植到 Python 2.6,解决了这个问题。
3 个回答
sudo aptitude install python-imaging
这段话的意思是,这样做会安装PIL这个库。不过我不太确定怎么帮你解决其他的包的问题。你可以试着在synaptic里搜索一下它们。
sudo aptitude install python-imaging
这段代码会安装PIL库。
简单来说:
首先尝试使用Ubuntu的官方软件库。如果找不到你需要的包,就用 easy_install
。如果还是不行,可以直接把包下载到你的源文件夹里。
Ubuntu软件库(apt-get方法)
在Ubuntu(10.04及更新版本)中,大多数常用的软件包都可以通过 apt-get
来获取。它们的命名规则是 python-NAME
,比如 python-imaging
或 python-scipy
。
这是最好的方法,因为系统自带的软件管理工具会自动处理依赖关系和更新问题。
你可以运行 apt-cache search python | grep "^python-" | less
来查看你系统中可用的软件包列表(我在10.04的机器上有超过1200个)。
Setuptools
对于那些不在Ubuntu软件库中的包,你可以使用Python的 easy-install
工具。首先,安装这个工具:
sudo apt-get install python-setuptools
然后你可以用 easy-install
安装任何Python包,比如 colorworld:
sudo easy_install colorworld
这样可以在一定程度上保护你(比如处理依赖关系),但更新通常需要手动进行,而且在新电脑上重新安装这些包真的很麻烦。
手动下载
你总是可以把源代码下载到某个目录,然后把它添加到你的 PYTHONPATH
中。这种方法最适合你只是想评估一个包或者快速解决一些问题的时候。