web-dev-qa-db-ja.com

Virtualenvzlibという名前のモジュールはありません

Python2.6でPython 2.7仮想環境を作成しようとしています。実行しているのは次のとおりです。

virtualenv --python=python27 #python27 correctly leads to my python installation in /opt/python2.7/bin/python

Virtualenvは次のエラーで失敗します

Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/virtualenv.py", line 17, in <module>
import zlib
ImportError: No module named zlib

これは私を困惑させます:

1)私は明らかにpython zlibモジュールを持っています。 python 2.6のインタラクティブ環境で「importzlib」を実行すると、簡単にインポートできます。

2)システム(centos)にもzlibがインストールされています:

[me@mycomp]# rpm -qa | grep zlib
zlib-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.i686
zlib-devel-1.2.3-29.el6.x86_64

この問題に関して他に2つの質問があります。 ここここ です。どちらの場合も、zlibがインストールされていないだけで、私の場合ではありません(python 2.6、これは大丈夫ですか?)、彼らはまた、明らかにもはや活発な開発が行われていないpythonbrewを使用しています。

Virtualenvがzlibを見つけられないのはなぜですか? virtualenvはモジュールをどのように検索しますか? Python2.7にzlibをインストールする必要がありますか?または、Python2.7を再インストールして、zlibがサポートされるようにしますか?

補足:古いバージョンを使用している理由を聞かないでください。それは私の選択ではありません。

13
Pawel Miech

あなたのPythonはPythonサポートなしでコンパイルされている必要があります。おそらくzlib-develはコンパイル時にインストールされなかったためですmakeまたはmake installの出力を見ると、次のようなものが表示されます(Python 2.7.6)のビルドから取得)。

Python build finished, but the necessary bits to build these modules were not found:
[...]        zlib            
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

問題を解決するには、zlib-develをインストールし(インストールされていない場合)、Pythonを再コンパイルまたは再インストールする必要があります。

13
l0b0

zlibはPythonモジュールであり、コンピューター上のzlibライブラリとインターフェイスします。これは標準ライブラリの一部であるため、すべてのPython 2.7インストール。

そうでない場合は、あなたの場合、それはおそらくあなたのバージョンのPythonが何らかの理由でzlibサポートなしでコンパイルされたことを意味します。あなたがしたことに関連していない限り、理由は想像できません。古いバージョンのzlibの使用を有効にします。別のPythonパッケージを見つけるか、Python自分でコンパイルする必要があると思います。

5