python3.x - centos下,python在virtualenv新建python3报错
迷茫
迷茫 2017-04-17 17:35:13
0
2
831

使用virtualenv -p /usr/local/bin/python3.4 py34env安装python3环境报错,缺少zlib
可在python中导入zlib缺没有报错,错误如下:

[root@localhost crazycabbage]# virtualenv -p /usr/local/bin/python3.4 py34env
Running virtualenv with interpreter /usr/local/bin/python3.4
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/virtualenv.py", line 22, in <module>
    import zlib
ImportError: No module named 'zlib'
[root@localhost crazycabbage]# python
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import zlib
>>> 

Google后说在编译时加上--with-zlib,可报错 unrecognized options: --with-zlib,求大神帮忙!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
刘奇

CentOS-7預設安裝的是Python2.7.5,如你在shell下輸入Python後進入的解譯器裡寫的:Python 2.7.5 (default, Nov 20 2015, 02:00:19)。 CentOS-7默认安装的是Python2.7.5,如你在shell下输入Python后进入的解释器里写的:Python 2.7.5 (default, Nov 20 2015, 02:00:19)。

Python3.4应该是你自己装的,之所以2.7.5下可以import zlib,而3.4下不能,可能是因为你的3.4的库中没有zlib这个库,所以你需要先确认一下3.4到底有没有zlib

终端输入/usr/local/bin/python3.4进入3.4的解释器,然后输入import zlib看看有没有报ImportError异常,如果有,继续看下面的内容,如果一切正常,直接给我留言……

你需要尝试重新编译安装一遍对应Python版本的zlib,以确保正确的zlib被安装,甚至我建议你把zlib-devel也安装了。

但很多时候重新安装并不管用,要么会在使用Yum等包管理器安装时,在安装过程中看到类似“已经存在”、“已安装”(当然是英文提示)的字样,要么强行安装后依然无法使用。

这是因为它仍然安装到了Python2.7的库目录下,解决方法如下:

Python2.7.5的解释器中,输入如下代码,查看2.7的库目录:

import sys
print '\n'.join(sys.path)

输出结果:

/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/usr/lib64/python2.7/site-packages
/usr/lib64/python2.7/site-packages/gtk-2.0
/usr/lib/python2.7/site-packages

最直接的方法是把所需的目录添加到Python3.4的系统路径中。
首先把你的系统默认Python改为Python3.4,代替Python2.7.5:

ln -fs /usr/local/bin/python3.4 /usr/bin/python

终端中输入Python进入解释器验证。
然后运行vim ~/.bashrc编辑系统环境变量,进入编辑模式后再该文件最后加上这一句export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/xxx/:/usr/lib64/python2.7/xxx/,xxx是你需要的库目录,冒号分割,然后终端输入source ~/.bashrc让其在当前终端有效,或者直接重启设备。
你可能会问我,我怎么知道zlib在哪个目录?呃,好吧,帮人帮到底……
进入Python3.4解释器,把上面输出的2.7的目录逐个appendsys.path这个列表里,然后import zlib试过去,不报错为止,办法虽土,行之有效。

导入整个目录虽然直接且方便,但很可能会和3.4的库有冲突,所以你最好能知道zlib是哪些文件,然后copy3.4的系统路径下,譬如_sqlite3这个东西只需要_sqlite3.so这一个文件。zlib

Python3.4應該是你自己裝的,之所以2.7.5下可以import zlib,而3.4下不能,可能是因為你的3.4的函式庫中沒有zlib這個函式庫,所以你需要先確認一下3.4到底有沒有zlib。

終端機輸入/usr/local/bin/python3.4進入3.4的解釋器,然後輸入import zlib看看有沒有報ImportError異常,如果有,繼續看下面的內容,如果一切正常,直接給我留言……🎜 🎜你需要嘗試重新編譯安裝一遍對應Python版本的zlib,以確保正確的zlib被安裝,甚至我建議你把zlib-devel也安裝了。 🎜 🎜但很多時候重新安裝並不管用,要么會在使用Yum等套件管理器安裝時,在安裝過程中看到類似“已經存在”、“已安裝”(當然是英文提示)的字樣,要嘛強行安裝後依然無法使用。 🎜 🎜這是因為它仍然安裝到了Python2.7的函式庫目錄下,解決方法如下:🎜 🎜在Python2.7.5的解釋器中,輸入如下程式碼,查看2.7的庫目錄:🎜 rrreee 🎜輸出結果:🎜 rrreee 🎜最直接的方法是把所需的目錄加入Python3.4的系統路徑。
先把你的系統預設Python改為Python3.4,取代Python2.7.5:🎜 rrreee 🎜終端機中輸入Python進入解釋器驗證。
然後執行vim ~/.bashrc編輯系統環境變量,進入編輯模式後再該文件最後加上這一句export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2. 7/xxx/:/usr/lib64/python2.7/xxx/,xxx是你需要的函式庫目錄,冒號分割,然後終端機輸入source ~/.bashrc讓其在當前終端有效,或直接重啟設備。
你可能會問我,我怎麼知道zlib在哪個目錄?呃,好吧,幫人幫到底…
進入Python3.4解釋器,把上面輸出的2.7的目錄逐個appendsys.path這個清單裡,然後import zlib試過去,不報錯為止,辦法雖土,行之有效。 🎜 🎜導入整個目錄雖然直接且方便,但很可能會和3.4的庫有衝突,所以你最好能知道zlib是哪些文件,然後copy3.4的系統路徑下,譬如_sqlite3這個東西只需要_sqlite3.so這一個檔案。 zlib我不清楚,抱歉…🎜 🎜你試試唄,理論上這樣可以搞定,🎜
大家讲道理

--with-zlib 應該是指你在編譯 Pyton 3.4 的時候加上。這裡明顯是你的 Python 2.7 版本編譯了 zlib 而 3.4 沒有。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!