Виртуальное окружение нет модуля с именем библиотеку


Я пытаюсь создать Python 2.7 virtual env под Python2. 6, я просто запускаю:

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. Я могу импортировать его легко, когда я запускаю "import zlib" в интерактивной среде python 2.6.

2) у меня также есть zlib, установленный в моей системе (centos):

[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

Есть еще два вопроса, касающиеся этого вопроса, здесь и здесь , в обоих случаях у людей просто не установлен zlib, который не является моим случаем (у меня он есть в python 2.6, который должен быть в порядке, верно?), они также используют pythonbrew, который, по-видимому, больше не находится в стадии активного развития.

Почему virtualenv не может найти zlib? Как virtualenv ищет свои модули? нужно ли устанавливать zlib в моем Python2. 7? Или переустановить вместо python2.7 так что библиотека поддерживают данное приложение.?

Sidenote: пожалуйста, не спрашивайте, почему я использую старые версии, это не мое выбор.

2 10

2 ответа:

Ваш 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.

zlib это модуль Python, который взаимодействует с библиотекой zlib на вашем компьютере. Это часть стандартной библиотеки, поэтому она должна быть на всех установках Python 2.7.

Если это не так, то в вашем случае это, скорее всего, означает, что ваша версия Python была скомпилирована без поддержки zlib по какой-то причине. Я не могу себе представить, почему, если только это не связано с тем, что вы сделали, чтобы разрешить использование более старых версий zlib. Я думаю, вам нужно будет найти другой пакет Python, или скомпилировать Python себе.