問題來源
問題往往都是這樣來的突然,讓我措手不及。
小孩沒娘說來話長啊,作業系統是centos6.5因此預設自帶的python是2.6.6的,突然有一天我要寫一個關於kafka topic消費情況的監控,因此我需要安裝一個包,很不巧這個包要求很特殊需要python2.7,沒招只能升級了,升級比較簡單網上搜索一大堆,升級完成監控也順利開發完成了,一切就這樣相安無事過去了很久。突然今天同事來找我說他之前給hive寫的一個udf函式不能用了,說缺少這個包:pyhs2,還說之前裝過這個包,為啥不能用了,我說應該是我升級了python到2.7導致的吧,我說我給你裝一個吧,直接pip簡單的很啊,同事說你搞吧我回家了,結果我的悲劇就開始了。
問題1:pip安裝
升級完成後,我沒有安裝pip,直接下個包安裝一個吧,開始報錯了。
1.ImportError:
No
module named setuptools 解決方案
下載 setuptools-0.6c11
2.安裝setuptools報錯RuntimeError: Compression requires the (missing) zlib module
根據提示需要安裝zlib和zlib-devel 直接yum 安裝一下,但是需要重修編譯和安裝2.7的python
方法:進入到python2.7的安裝包中 先make 之後make install,之前你做的那些修改的ln-s 不需要改動,任然可以使用。
3.setuptools順利安裝完成了,在安裝pip 順利安裝完成。
問題2:pip指向的是2.6版本的問題
1.因為之前在python2.6的時候用pip安裝過pyhs2 因此在安裝包的時候報包已將安裝了,但是你去python2.7的環境下import 還是會報找不到包的問題。
原因:通過執行pip -V命令發現pip的連結還是python2.6的,因此你之前安裝的包在這就提示你已經安裝過了。
問題:ImportError: No module named pkg_resources
解決方法:1.解除安裝當前的pip從新安裝 參考文章http://linuxsogood.org/816.html。這兩個問題都可以這麼解決。
解決方法:2.保留之前的pip,因為另一個使用者任然需要2.6.6的環境,找到python2.7中自帶的pip包,再次安裝包
執行:whereis pip,找到現在的pip路徑
執行:/usr/local/bin/pip2.7 install pyhs2。
問題3:安裝pyhs2的時候報錯
報錯問題:ImportError: cannot import name HTTPSHandle
解決方法:缺少openssl和openssl-devel導致的問題。直接yum 安裝一下,但是需要重修編譯和安裝2.7的python
yum install openssl openssl-devel
方法:進入到python2.7的安裝包中 先make 之後make install,之前你做的那些修改的ln-s 不需要改動,任然可以使用。
之後再次安裝pyhs2即可。