2013-06-13 259 views
2

我想從Windows切換到Linux(Ubuntu)編寫我的Python程序,但我無法讓事情工作。問題來了:我可以看到在Ubuntu中預裝了很多模塊(比如numpy,pandas,matplotlib等)。他們很好地坐在/ host/Python27/Lib/site-packages目錄中。但是當我編寫測試python腳本並嘗試執行它時,只要我嘗試導入模塊(例如import numpy as np就給我ImportError: No module named numpy),它就會給我一個ImportError。當我在命令行中鍵入which python時,我得到/usr/bin/python路徑。我想我可能需要改變與python路徑相關的東西,但我不知道該怎麼做。模塊安裝時導入Python ImportError [Ubuntu]

回答

8

您可以在終端中使用以下命令查看PYTHONPATH中的文件夾。

python -c "import sys, pprint; pprint.pprint(sys.path)" 

我猜/host/Python27/Lib/site-packages不會是在那裏(它聽起來並不像一個普通的Python路徑。您是如何安裝這些軟件包?)。

如果你要的文件夾添加到您的PYTHONPATH然後使用以下命令:

export PYTHONPATH=$PYTHONPATH:/host/Python27/Lib/site-packages 

個人在這裏是使用Python開發的一些建議:

  1. 使用virtualenv。這是一個非常強大的工具,可以創建沙盒python環境,因此您可以安裝模塊並將它們與主解釋器分開。

  2. 使用pip - 當您創建virtualenv並激活它時,可以使用pip install爲您安裝軟件包。例如pip install numpy會將numpy安裝到您的虛擬環境中,並且只能從此virtualenv訪問。這意味着你也可以安裝不同的版本進行測試等。非常強大。我建議使用pip來安裝你的python軟件包而不是使用ubuntu apt-get install,因爲你更可能獲得更新版本的模塊(apt-get依賴於某人打包最新版本的python庫,並且可能無法使用pip )。

  3. 在編寫可執行文件(chmod +x my_python_script.py)的Python腳本時,請確保將#!/usr/bin/env python放在最頂端,因爲它會在您的虛擬環境中選取python解釋器。如果你不(並且放#!/usr/bin/python)那麼運行./my_python_script.py將總是使用系統python解釋器。

+0

我猜這些軟件包是由Ubuntu安裝的,因爲我沒有在完全安裝Ubuntu之後自行安裝任何python軟件包。我已經嘗試將'/ host/...'路徑添加到PYTHONPATH,但是仍然無法找到各種依賴關係。我會嘗試使用'virtualenv'來代替它,看看它是否有效。謝謝你的回覆 – MPA

1

/host/Python27/Lib/site-packages不是linux安裝上的默認python目錄,據我所知。

根據您的處理器架構,應該在/usr/lib/usr/lib64之下找到正常的python安裝(和python軟件包)。

如果你想查一下Python是除了這些目錄中搜索您可以使用一個終端使用以下命令:

echo $PYTHONPATH 

如果未列出/host/Python27/Lib/site-packages路徑,嘗試使用以下命令再次嘗試:

export PYTHONPATH=$PYTHONPATH:host/Python27/Lib/site-packages 

如果這應該工作,你不希望你要使用這些軟件包,簡單地把它放入一個叫.bashrc文件在您home FOL每次寫在終端der(通常爲/home/<username>)。