python dist-packages 和 site-packages

dist-packages 和site-packages在我的ubuntu12上都在/usr/local/lib/python2.7目錄下

今天安裝django時發現一個奇怪的現象:

我使用 pip install Django==1.8.4安裝的django,安裝成功,直接在終端使用django-admin也成功,但是進入python:import dnango,卻提示no module named django,真的百思不得其解。

查了一番資料後得知原因:

當python import模塊的時候,就通過sys.path裏面的目錄列表下面去查找


我的django安裝在dist-packages下面的,但是sys.path裏面沒有這個目錄,當我使用os.sys.path.append將這個目錄加入時,能夠import了,但是這個隨着python的重啓就會消失。

然後我發現之前安裝的pymysql沒啥問題(忘了怎麼裝的了),然後我發現這個paramiko是安裝在site-packages下面的,而sys.path列表裏是有site-packages這個目錄的

我的解決辦法是將site-packages裏建一個dist-packages/django的軟連接,ok。當然更好的辦法應該是將dist-packages加入sys.path


但是問題是這個dist-packages 和site-packages之間有啥不可見人的故事呢?搞得如此麻煩


dist-packages是debian系統及其衍生系統的默認python的模塊默認安裝目錄,如果使用包管理器(如apt-get)安裝python的模塊,都會安裝到/usr/lib/python2.7/dist-packages

而easy_install 和pip都是通過包管理器來安裝python模塊的,但是他們把安裝包安裝在/usr/local/lib/python2.7/dist-packages。而通過源(編譯安裝沒試過,不知道)自己手動安裝的python是使用site-packages來查找模塊,這樣做讓系統的python模塊和用戶自己安裝的模塊分割開來,互不影響


btw: 在我的機子上,系統自帶的python安裝在/usr/lib/python2.7下面的,而我自己安裝的python在/usr/local/lib/python2.7下面,在終端中直接輸入python進入的是我自己裝的python。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章