在Ubuntu 10.4上安装Python-2.7

13 投票
4 回答
29110 浏览
提问于 2025-04-16 06:15

我似乎无法正确安装zlib,我是在Ubuntu10.4上从源代码安装的Python。

'######## 编辑 #####################
bobince和Luper帮了我。
确保你安装这些软件包,然后重新编译Python:
sudo aptitude install zlib1g-dev libreadline6-dev libdb4.8-dev libncurses5-dev
'#################################

安装后,我尝试安装setuptools.py。

$ sh setuptools-0.6c11-py2.7.egg   
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

然后我安装了zlib:

$ sudo aptitude install zlibc  
Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
Reading extended state information        
Initializing package states... Done  
The following NEW packages will be installed:  
  zlibc   
0 packages upgraded, 1 newly installed, 0 to remove and 44 not upgraded.  
Need to get 74.6kB of archives. After unpacking 299kB will be used.  
Writing extended state information... Done  
Get:1 http://archive.ubuntu.com/ubuntu/ lucid/universe zlibc 0.9k-4.1 [74.6kB]  
Fetched 74.6kB in 0s (108kB/s)  
Selecting previously deselected package zlibc.  
(Reading database ... 19824 files and directories currently installed.)  
Unpacking zlibc (from .../zlibc_0.9k-4.1_amd64.deb) ...  
Processing triggers for man-db ...  
Setting up zlibc (0.9k-4.1) ...  
Reading package lists... Done               
Building dependency tree         
Reading state information... Done  
Reading extended state information        
Initializing package states... Done  

在重新编译Python之前:

但是setuptools还是无法安装:

$ sh setuptools-0.6c11-py2.7.egg   
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

我感到很困惑。

我检查了我的权限:

lrwxrwxrwx 1 root      18 Oct 28 18:19 /usr/bin/python -> /usr/bin/python2.7
lrwxrwxrwx 1 root      24 Oct 28 18:26 /usr/bin/python2.7 -> /usr/local/bin/python2.7
lrwxrwxrwx 1 root       9 Oct 28 15:13 /usr/bin/python2 -> python2.6
-rwxr-xr-x 1 root 2613296 Apr 16  2010 /usr/bin/python2.6

我注意到我多加了一步,所以我重新整理了一下:

llrwxrwxrwx 1 root      24 Oct 28 18:33 /usr/bin/python -> /usr/local/bin/python2.7  
lrwxrwxrwx 1 root       9 Oct 28 15:13 /usr/bin/python2 -> python2.6  
-rwxr-xr-x 1 root 2613296 Apr 16  2010 /usr/bin/python2.6  

现在,Python2.7应该是默认版本,但它还是失败了。

$ sh setuptools-0.6c11-py2.7.egg --prefix=/usr/local/bin/python2.7  
Traceback (most recent call last):  
  File "<string>", line 1, in <module>  
zipimport.ZipImportError: can't decompress data; zlib not available  

zlib应该放在哪里才能正常工作?

$ find / -name zlib 2>/dev/null  
/home/username/sources/Python-2.7/Modules/zlib  
/home/username/sources/Python-2.7/Demo/zlib  

username@servername Thu Oct 28 18:43:17 ~/sources   
$ find / -name zlibc 2>/dev/null  
/usr/share/lintian/overrides/zlibc  
/usr/share/doc/zlibc

4 个回答

2

在从源代码配置和编译Python的时候,确保安装了zlib的开发包(还有其他任何你需要的标准模块所依赖的库)。

9

请记住,Ubuntu 系统在 /lib/x86_64-linux-gnu 这个文件夹里存放着适用于 x64 架构的文件。如果你使用的是这种架构,你需要创建一个符号链接:

$ sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/libz.so

另外,你也应该对其他共享库做同样的操作。

20

你不需要 zlibc,那完全是另外一回事。你需要的是 zlib1g(这个通常已经安装好了),还有像Luper提到的那个“开发”包,也就是 zlib1g-dev

在基于Debian的Linux系统中,每个C库都会被分成一个运行时的二进制包和一个开发包,后者提供编译时需要的头文件。如果你想从源代码编译某个依赖于这个库的程序,你就需要这两个包。虽然这有点麻烦,但考虑到像Ubuntu这样系统中有非常多的库,这也是没办法的事。

确保你还安装其他可能需要的 -dev 包,这样Python才能使用,比如 libexpat1-devlibdb4.8-devlibncurses5-devlibreadline6-dev(没有readline的Python解释器用起来可真不方便!)。然后你需要重新编译Python,以便利用这些包。

(或者如果你觉得麻烦,也可以不使用setuptools,直接解压你需要的应用程序,然后把它放到site-packages或者其他地方。老实说,我不是特别喜欢这种“egg”格式的东西。)

撰写回答