нет модуля с именем zlib - PullRequest
42 голосов
/ 29 мая 2011

Во-первых, пожалуйста, потерпи меня.Мне трудно рассказать другим о моей проблеме, и это длинная тема ...

Я использую pythonbrew для запуска нескольких версий python в Ubuntu 10.10.Чтобы установить pythonbrew и как он работает, перейдите по этой ссылке ниже

http://www.howopensource.com/2011/05/how-to-install-and-manage-different-versions-of-python-in-linux/

Прочитав пару потоков stackoverflow, я наконец нашел файл с именем Setup в этом каталоге: ~ / .pythonbrew / pythons / Python-2.7.1 / lib / python2.7 / config

In this Setup file I see 
# Andrew Kuchling's zlib module.
# This require zlib 1.1.3 (or later).
# See http://www.gzip.org/zlib/
# zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

Я раскомментировал последнюю строку, затем запустил python -v снова.Тем не менее, я получил ту же ошибку при попытке import zlib , поэтому я думаю, что мне нужно что-то сделать, чтобы установить zlib в lib.

Но я не знаю, что мне нужно делать.Может кто-нибудь, пожалуйста, направьте меня в правильном направлении ???Большое спасибо!

Я делаю это, потому что хочу использовать разные версии python в разных виртуальных средах, которые я создал.Когда я сделал virtualenv -p python2.7 , я не получил ни одного модуля с именем zlib.

jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python2.7 --no-site-packages testenv

Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-2.7.1/bin/python2.7

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

ImportError: No module named zlib

РЕДАКТИРОВАТЬ

Мне нужно установить 2.7.1, добавив --force.

Я разрабатываю Django, иМне нужны некоторые из этих недостающих модулей, например, sqlite3, и для создания моего virtualenv мне определенно нужен zlib.Если я просто использую системное значение по умолчанию (2.6.6), у меня нет проблем.

Чтобы сделать это с системным значением по умолчанию, все, что мне нужно сделать, это

virtualenv --no-site-packages testenv

Спасибо!


(2-е редактирование)

Я также установил 3.2 и протестировал его без проблем, поэтому я думаю, что моя проблема сводится к тому, как установить отсутствующий модуль(s).

jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python3.2  testenv
Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-3.2/bin/python3.2
New python executable in testenv/bin/python3.2
Also creating executable in testenv/bin/python
Installing distribute..................................................................................................................................................................................................................................................................................................................................done.
Installing pip...............done.
jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python3.2 --no-site-packages testenv
Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-3.2/bin/python3.2
New python executable in testenv/bin/python3.2
Also creating executable in testenv/bin/python
Installing distribute..................................................................................................................................................................................................................................................................................................................................done.
Installing pip...............done.

Ответы [ 8 ]

30 голосов
/ 29 мая 2011

Похоже, вам нужно установить пакет devel для zlib, возможно, вы хотите сделать что-то вроде sudo apt-get install zlib1g-dev (я не пользуюсь ubuntu, поэтому вы захотите перепроверить пакет).Вместо того, чтобы использовать python-brew, вы можете подумать о простой компиляции вручную, это не очень сложно.Просто скачайте исходный код и configure, make, make install.Вы захотите хотя бы установить --prefix где-нибудь, чтобы он был установлен там, где вы хотите.

./configure --prefix=/opt/python2.7 + other options
make
make install

Вы можете проверить, какие параметры конфигурации доступны с ./configure --help, и посмотреть, какая у вас системаPython был скомпилирован с помощью:

python -c "import sysconfig; print sysconfig.get_config_var('CONFIG_ARGS')"

Ключ в том, чтобы убедиться, что у вас установлены пакеты разработки для вашей системы, чтобы Python мог собирать zlib, sqlite3 и т. д.модули.Документы Python описывают процесс сборки более подробно: http://docs.python.org/using/unix.html#building-python.

22 голосов
/ 28 февраля 2012

По умолчанию при настройке источника Python модуль zlib отключен, поэтому вы можете включить его, используя опцию - with-zlib при настройке. Так становится

./configure --with-zlib
19 голосов
/ 19 июня 2012

В случае, с которым я встречался, я обнаружил, что после make отсутствуют модули. Поэтому я сделал следующее:

  1. установить zlib-devel
  2. Снова создайте и установите Python.
9 голосов
/ 18 августа 2013

После запуска configure вы можете изменить опцию config в файле Modules / Setup, как показано ниже:

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

Или вы можете раскомментировать строку zlib как есть.

3 голосов
/ 20 сентября 2012

После установки отсутствующего пакета zlib dev вы также можете использовать pythonbrew для удаления, а затем переустановить ту версию python, которую вы хотели, и, похоже, он подберет новый пакет для компиляции для исправления его способностей. Таким образом, вы можете продолжать использовать pythonbrew и не делать компиляцию самостоятельно (хотя это не так сложно)

0 голосов
/ 23 сентября 2018

У меня было много проблем с созданием виртуальной среды (venv), как описано в руководстве по установке tenorflow .

Большинство команд, перечисленных в этом посте, мне тоже не помоглиИтак, если это также ваш случай, это то, что я сделал:

  1. pip3 install --user pipenv
  2. pip install virtualenv

Устанавливает зависимости для созданиявиртуальная среда

mkdir myenv

Создает новый каталог с именем myenv , но вы можете называть его как хотите, например mynewenv

cd myenv

Или как вы называете свой каталог так: cd [your_directory_name]

virtualenv -p /usr/bin/python3 venv

Создает виртуальную среду с именем venv в папке myenv .Вы можете называть свой виртуальный env как угодно, например, vitualenv [v_env_name]

source ./venv/bin/activate

Активирует виртуальную среду.Обратите внимание, что если вы выбираете другой v. Env.имя вашей команды должно быть написано как источник ./[v_env_name]/bin/activate

deactivate

Отключение виртуальной среды.

Примечание. Я использую исходный код Python 3.6.6 и Ubuntu 18.04

длякоманды

0 голосов
/ 30 декабря 2016

Самое простое решение, которое я нашел, дано на python.org devguide:

sudo apt-get build-dep python3.6

Если этот пакет недоступен для вашей системы, попробуйте уменьшить минорную версию, пока не найдете пакет, доступный в менеджере пакетов вашей системы.

Я пытался объяснить детали, на моем блоге .

0 голосов
/ 27 февраля 2014

Моей целью было создание нового проекта Django из командной строки в Ubuntu, например:

django-admin.py startproject mysite

У меня установлен python2.7.5. Я получил эту ошибку:

ImportError: No module named zlib

Я часами не мог найти решение, до сих пор!

Вот ссылка на решение -

http://doc.biblissima -condorcet.fr / loris-setup-guide-ubuntu-debian

Я следовал и выполнил инструкцию в Разделе 1.1, и она работает отлично! Это простое решение.

...