首先,请耐心等待。我很难告诉别人我的问题,这是一个很长的线索。。。
我使用pythonbrew在Ubuntu 10.10中运行多个版本的python。关于安装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。然而,当我尝试导入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
编辑
我必须通过添加--force来安装2.7.1。
我正在开发Django,我需要一些缺失的模块,例如sqlite3,要创建我的virtualenv,我肯定需要zlib。如果我只是使用系统默认值(2.6.6),我就没有问题。
要在系统默认的情况下做到这一点,我所需要做的就是
virtualenv --no-site-packages testenv
谢谢!
(第二次编辑)
我也安装了3.2,我测试了它没有问题,所以我想我的问题归结为如何安装缺失的模块。
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.
听起来你需要为zlib安装devel包,可能想做一些类似的事情
# ubuntu 12,14,16,18,20.04+
sudo apt-get install zlib1g-dev
您可能想考虑手动编译,而不是使用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。
默认情况下,当您配置Python源代码时,zlib模块是禁用的,所以您可以使用选项启用它——当您配置它时使用zlib。所以它变成
./configure --with-zlib
对于我遇到的案例,我发现在制作后缺少模块。所以我做了以下事情:
- 安装zlib-devel
- 再次制作并安装python
运行configure后,您可以更改文件Modules/Setup中的配置选项,如下所示:
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
或者,您可以按原样取消对zlib行的注释。
我在制作tensorflow安装指南中描述的虚拟环境(venv)时遇到了很多问题。
这篇文章中列出的大多数命令也对我没有帮助,所以,如果这也是你的情况,这就是我所做的:
pip3 install --user pipenv
pip install virtualenv
安装依赖项以创建虚拟环境
mkdir myenv
创建一个名为myenv的新目录,但您可以随意调用它,例如mynewenv
cd myenv
或者不管你怎么称呼你的目录,所以:cd[your_directory_name]
virtualenv -p /usr/bin/python3 venv
在文件夹myenv中创建名为venv的虚拟环境。你可以随意调用你的虚拟环境,例如vitualenv[v_env_name]
source ./venv/bin/activate
激活虚拟环境。请注意,如果您选择不同的v.env。name您的命令应该写成这样的源代码/[v_env_name]/bin/activate
deactivate
停用虚拟环境。
注意:我使用的是Python 3.6.6&Ubuntu 18.04
命令的源代码
在安装了丢失的zlib dev包后,您还可以使用pythonbrew卸载然后重新安装您想要的python版本,它似乎会选择新的包进行编译以获得正确的功能。通过这种方式,您可以继续使用pythonbrew,而不必自己进行编译(尽管没有那么困难)
类似于在CentOS或RHEL上运行的答案
sudo yum install zlib-devel
这里显示的--withzlib解决方案似乎缺少Python 3.9及更高版本需要链接的头(在我的例子中)。
我发现的最简单的解决方案在python.org devguide:
sudo apt-get build-dep python3.6
如果该软件包不适用于您的系统,请尝试减少次要版本,直到您在系统的软件包管理器中找到可用的软件包。
我试着在博客上解释细节。
我的目标是从Ubuntu中的命令行创建一个新的Django项目,如下所示:
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节中的指示,它运行得很好!这是一个简单的解决方案。