Установка Python-2.7 в Ubuntu 10.4 - PullRequest
13 голосов
/ 29 октября 2010

Кажется, я не могу правильно установить zlib, я установил Python из исходного кода на Ubuntu10.4

'######## edit #####################
Бобинс и Люпер помогли.
Убедитесь, что вы установили эти пакеты, а затем перекомпилировали 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 ]

20 голосов
/ 29 октября 2010

Вы не хотите zlibc, это что-то совершенно другое. Вам нужен zlib1g (который, безусловно, будет уже установлен) и, как упоминал Лупер, пакет "development", который zlib1g-dev.

Дистрибутивы Linux на основе Debian разбивают каждую библиотеку C на отдельный двоичный пакет времени выполнения и пакет разработки, который предоставляет заголовки для включения во время компиляции. Если вы хотите скомпилировать что-то из источника, основанного на библиотеке, вам нужны оба пакета. Это немного раздражает, но, вероятно, неизбежно, учитывая потрясающе огромное количество библиотек, подобных Ubuntu.

Убедитесь, что вы вводите другие -dev пакеты, которые вы также можете использовать в Python, такие как libexpat1-dev, libdb4.8-dev, libncurses5-dev и libreadline6-dev (использование интерпретатора Python без readline - это больно!). Затем вам придется перекомпилировать Python, чтобы воспользоваться ими.

(Или, если вас это не беспокоит, вы можете забыть setuptools и просто распаковать любое конечное приложение, которое вы сами, и поместить его в пакеты сайта или где-то еще. Должен сказать, я не большой поклонник яиц .)

9 голосов
/ 19 октября 2011

Помните, что Ubuntu использует каталог с именем / lib / x86_64-linux-gnu для x64 архитектур.Если вы используете эту архитектуру, вам нужно создать символическую ссылку:

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

Кроме того, вы должны сделать то же самое для других общих библиотек.

2 голосов
/ 29 октября 2010

Убедитесь, что при настройке и компиляции Python из исходного кода установлен пакет dev для zlib (и любой другой библиотеки, от которой зависит необходимый вам стандартный модуль).

1 голос
/ 24 ноября 2011

Попробуйте установить dpkg-dev перед настройкой и компиляцией Python. Это установит в систему исполняемый файл архитектуры dpkg, который Python использует (см. Setup.py) для определения, где находится библиотека libz.so. Подробнее см. http://fnch.users.sourceforge.net/pythononubuntu1004.html

...