Lors de la création de Python 3.2.3 à partir du source sur Ubuntu 12.04, le module zlib n'est pas disponible.
J'ai téléchargé la distribution source officielle de python.org et tenté de la construire et de l'installer avec les commandes suivantes.
tar xfa Python3.2.3.tar.bz2
cd Python-3.2.3
./configure --prefix=/opt/python3.2
make
Sudo make install
La sortie de la commande make comprend les éléments suivants.
Python build finished, but the necessary bits to build these modules were not found:
_curses _curses_panel _dbm
_gdbm _sqlite3 _ssl
_tkinter bz2 readline
zlib
Après avoir exécuté make install
et démarré l'interpréteur, le module zlib
ne peut pas être importé.
J'ai confirmé que le package zlib1g-dev
est installé sur mon système.
J'ai également trouvé cette question similaire , qui suggère d'ajouter l'indicateur --with-zlib
à la commande ./configure
. Cependant, cela renvoie une erreur indiquant qu'il s'agit d'une option non reconnue et sans effet.
La solution consiste à installer le paquet Ubuntu dpkg-dev
.
Sudo apt-get install dpkg-dev
La raison est expliquée ici .
En bref, les versions récentes d'Ubuntu ne stockent pas libz.so
dans l'emplacement standard /usr/lib
, mais plutôt dans un emplacement spécifique à la plate-forme. Par exemple, sur mon système, il est en /usr/lib/x86_64-linux-gnu
. Cela empêche le système de construction de Python de le trouver.
Le package dpkg-dev
installe l'exécutable dpkg-architecture
, ce qui permet à Python de rechercher les bibliothèques nécessaires.
La question initiale concernait Python 3.2.3. J'ai également téléchargé Python 2.7.3 et confirmé que le même problème existait, et que cette solution lui est également applicable.
J'ai eu un problème similaire sur CentOS 6.3 et python 3.2.3
Je l'ai résolu par:
Éditez /Modules/Setup
et décommentez la ligne:
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
accédez au répertoire/Modules/zlib:
./configure
make
Sudo make install
puis compilé ma source python3.2.
et a ensuite pu tester import zlib et tout a bien fonctionné :)
J'utilise CentOS 6.6 et recevais des erreurs zlib. Aucune des autres réponses proposées ici ne fonctionnait pour moi (y compris la correction pour CentOS 6.3 de la suppression d'une ligne dans les modules/Setup). Je l'ai corrigé en utilisant les commandes suivantes.
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
Ensuite, configurez et installez python comme suit:
./configure --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
Je peux maintenant importer zlib dans /usr/local/bin/python2.7 sans aucun problème.
Ces instructions sont légèrement modifiées par rapport à un article trouvé ici.
J'avais la même erreur en travaillant sur MAC
Ma version MAC OS
$ uname -v
Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64
python3.4 est utilisé ici
zlib non disponible lors de l'utilisation de python3.4
$ python3.4 get-pip.py Traceback (l'appel le plus récent en dernier): Fichier "get-pip.py", ligne 20204, dans principale() Fichier "get-pip.py", ligne 152, dans le fichier principal bootstrap (tmpdir = tmpdir) Fichier "get-pip.py", ligne 82, dans le fichier bootstrap Import pip zipimport.ZipImportError: impossible de décompresser les données; zlib non disponible
La reconstruction de Python échoue
./configure --with-zlib-dir =/usr/local/lib
... configure: ATTENTION: options non reconnues: --with-zlib-dir ...
Assurez-vous que zlib est installé . Par défaut, il sera installé dans/usr/lib
ls /usr/lib/libz.*
S'il n'est pas installé, A. téléchargez et installez i) à partir du site zlib.net ou ii) à partir d'un dépôt Git comme ci-dessous
git clone https://github.com/madler/zlib.git
ou iii). Utilisez la source zlib dans le répertoire source python Modules/zlib
b. Installez zlib
./configure --prefix=/usr/local
make
Sudo make install
2.Modifiez/Module/Setup en supprimant la mise en commentaire de la ligne ci-dessous .__ "
3.Rebuild the Python3.4 à partir de source
cd ${PYTHON_SRC_CODE_DIR}
./configure --prefix=${PYTHON_HOME_DIR}
make
Sudo make install
4. Confirmez l'installation .__ Veuillez noter que gzip dépend de zlib.
nbr_repeation=100
f=open("some_file.txt","at")
for line in range(nbr_repeation):
print('[{}] This file will be compressed using python zlib/gzipmodule'.format(line),file=f)
f.close()
f=open("some_file.txt","rt")
import gzip
gz=gzip.open('some_file.gz', 'wt')
for line in f : gz.write(line)
gz.close() # Like to be clean exit
f.close() # Like a clean exit
"""confirm the creation of the compressed gzip files"""
import os
print([ (file,os.stat(file)[6],"bytes") for file in os.listdir(".") if file.startswith("some")])
La seule solution qui m'a aidé à installer Python 3.5.1 était d'apt-get zlib1g-dev (et d'autres paquets tels que python-setuptools et python-pip), puis de reconstruire python 3.5.1 à partir du code source.
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get dist-upgrade
Sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
Sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
Sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
Sudo apt-get install libssl-dev openssl
cd ~
mkdir build
cd build
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar -zxvf Python-3.5.1.tgz
cd Python-3.5.1
./configure
make
Sudo make install
Extrait de: https://github.com/MrYsLab/xideco/wiki/Installing-Python-3.5
Comme je comprends la nouvelle construction de python est faite avec l’inclusion de paquets liés précédemment avec apt-getted . Ainsi, lorsque vous parcourez le contenu des nouveaux paquets Python-3.5.1/lib/site, il y aura pip et setuptools. Plus important encore, ils seront copiés sur tous les virtualenv que vous ferez avec Python-3.5.1 ET ce virtualenv utilisera THEM à partir du système par défaut. Ceci est très, très important à retenir lors de l'installation de la nouvelle version de Python. Sinon, on pourrait se retrouver dans un trou noir d'erreurs telles que:
La solution la plus simple que j'ai trouvée est sur python.org :
Sudo apt-get build-dep python3.6
Si ce paquet n’est pas disponible pour votre système, essayez de réduire la version mineure jusqu’à ce que vous trouviez un paquet disponible dans le gestionnaire de paquets de votre système.
Si vous voyez quelque chose comme ceci: E: You must put some ‘source’ URIs in your sources.list
, ouvrez Logiciel et mises à jour et activez le code source.
J'ai essayé d'expliquer les détails, sur un article de blog .
Sudo apt-get install zlib1g-dev
est ce qui a fonctionné pour moi.
Sudo apt-get install build-essential python-dev
Même si python-dev est pour python2.7, il apportera toujours toutes les dépendances nécessaires.
Vous devrez ensuite faire:
./configure
make
Sudo make install
Pour reconstruire python3
Si vous essayez d'utiliser une variable zlib
non système/non standard (par exemple, créez votre propre source), assurez-vous de passer à la fois CPPFLAGS
(pas CFLAGS
!) Et LDFLAGS
à ./configure
. Par exemple, si votre zlib
est dans /opt/zlib
:
./configure CPPFLAGS='-I/opt/zlib/include' LDFLAGS='-L/opt/zlib/lib'
make
Sudo make install
J'ai fini par descendre dans le terrier des lapins en essayant de comprendre pourquoi notre Python ne fonctionnait pas avec le support zlib et j'ai découvert que le code_cpython setup.py
ne consulte pas CFLAGS
pour les répertoires d'inclusion, uniquement CPPFLAGS
: https: // github.com/python/cpython/blob/master/setup.py#L562