[心得]SUSE OS上ImportError的解決方法
今天在SUSE上安裝Python 3.5的時候遇到了
ImportError: No module named readline的問題
花了不少時間GOOGLE,才把問題解決掉。
所以分享給遇到類似問題的鄉民,順便留下記錄,方便以後查詢XD。
先從如何在SUSE上安裝Python 3.5講起好了
1. 下載Python 3.5,並解壓縮
網址:https://www.python.org/ftp/python/
(自行尋找對應的版本e.g x86 or amd64)
2.進入解好壓縮的Python 3.5資料夾,並設置Python的安裝目錄
指令:
sudo ./configure --prefix=/usr/local/python3.5
(等號後面的路徑取決於你想安裝的地方)
3.開始編譯Python
指令: sudo make instal
接著會出現一大串編譯訊息,等它跑完成即可。
4.將當前版本的Python,加入至環境變數$PATH中(非必要)
指令:
su (切換成root)
echo $PATH (查看系統預設路徑)
ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python3.5 (建立link)
5. 進入Python3.5
指令:python3.5
如果看到ImportError: No module named 'readline',就表示python 沒有被正確安裝
這個原因可能是缺少了libreadline函示。
解決辦法:
指令
sudo zypper ar "http://download.opensuse.org/repositories/shells/SLE_11_SP3/shells.repo"
(增加repo. source)
sudo zypper in readline-devel
(安裝 libreadline函示)
PS:zypper是SUSE的套件安裝管理工具。"in" 表示安裝的意思。
6. 重新進入python 3.5後,
應該就會看到ImportError: No module named 'readline'消失了。
--------------------------------Part II--------------------------------------
補足其他缺少的函示庫:
雖然安裝readline-devel 後,可以解決進入python IDLE後顯示ImportError的問題,
但這不代表所有的python所需的函示都已經被正確安裝。
仍須進一步查看,python缺少哪些函示。
1.先回到python 3.5的解壓縮資料夾,並輸入指令make,
如果有缺少函示,應該會顯示類似下列的訊息:
The necessary bits to build these optional modules were not found:
_bz2 _lzma _sqlite3
_ssl _tkinter zlib
舉例來說:
_lzma是壓縮模組所需的函示庫,這個可以透過安裝xz-devel套件補足
_sqlite3 則代表需要安裝sqlite3-devel套件
2.搜尋repo裡面,是否有所需的套件(e.g. xz-devel)
指令:
zypper se XZ (在repo裡面,搜尋含有XZ字元的package)
搜尋結果如下:
S | Name | Summary | Type
--+----------+------------------------------------------+-----------
| xz | A Program for Compressing Files | srcpackage
i | xz | A Program for Compressing Files | package
| xz-devel | Development package for the LZMA library | package
i | xz-lang | Languages for package xz | package
3. 安裝缺少的套件
指令
zypper in xz-devel (如果所需套件有在清單內,則直接安裝)
4. 剩餘缺少的套件,以此類推。
PS1:
如果reop內,搜尋不到所需套件,
可以去suse 官網下載開發者套件的光碟iso檔
網址: https://download.suse.com/index.jsp
將下載好的iso檔,掛載到mnt底下,
指令:
sudo mount -t iso9660 -o loop SUSE_11_SDK.iso /mnt/iso/
將/mnt/iso加到repo內
指令:
zypper ar /mnt/iso SUSE_11_SDK
PS2:
_tkinter這個函示,除非有涉及到開發圖形界面或要使用idle,
否則不一定要安裝。
(指令:zypper in tk-devel)
ref:
http://tinyurl.com/zvfrhvq
http://stackoverflow.com/questions/12023773/python-3-3-source-code-setup-modules-were-not-found-lzma-sqlite3-tkinter
https://en.opensuse.org/SDB:Zypper_usage_11.3
https://download.suse.com/index.jsp
http://anjsimmo.blogspot.tw/2014/10/how-to-install-python-34-from-source-on.html
http://www.savedba.com/?p=704
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.136.176.152
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1450091118.A.8B4.html
※ 編輯: sexyrickysky (140.136.176.152), 12/14/2015 21:01:39
→
12/14 21:06, , 1F
12/14 21:06, 1F
→
12/14 21:09, , 2F
12/14 21:09, 2F
→
12/14 21:30, , 3F
12/14 21:30, 3F
→
12/14 21:30, , 4F
12/14 21:30, 4F
多謝提點,不過我的/usr/bin/python的部分並沒有被覆蓋到,
我想應該是我下了--prefix=/usr/local/python3.5 參數的關係吧?
※ 編輯: sexyrickysky (140.136.176.152), 12/14/2015 23:19:26
→
12/14 23:42, , 5F
12/14 23:42, 5F
→
12/14 23:42, , 6F
12/14 23:42, 6F
→
12/14 23:43, , 7F
12/14 23:43, 7F
→
12/15 14:00, , 8F
12/15 14:00, 8F
→
12/15 14:00, , 9F
12/15 14:00, 9F
Python 近期熱門文章
PTT數位生活區 即時熱門文章