2012-06-28 56 views
1

我一直在使用Think Python來學習過去幾天的編程。今天我到了第四章,當時它開始討論需要Swampy,一個包(正確的術語?)在本章中用於教導界面設計。模塊安裝時沒有模塊錯誤

所以,讓我的問題,代碼我被告知進入第一位是

from swampy.TurtleWorld import * 
world = TurtleWorld() 
bob = Turtle() 
wait_for_user() 

當我運行它,我得到以下錯誤

Traceback (most recent call last): 
File "/Users/dylanevans/Documents/Code/Python/TurtleWorld.py", line 1, in <module> 
from swampy.TurtleWorld import * 
ImportError: No module named swampy.TurtleWorld 

我已經安裝並用pip和distutils卸載swampy,swampy在site-packages中,當我向解釋器詢問安裝了哪些模塊時,會出現swampy。我只是不明白爲什麼我會收到錯誤。

另外,我的PYTHONPATH在最後有'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy'。雖然它有兩次,但我不知道這是否重要。

任何幫助將不勝感激。

感謝

回答

2

打開一個終端,輸入env | grep ^PYTHONPATH希望你得到的東西是這樣的:

PYTHONPATH=/python/path/with/write/access:/another/python/path 

選擇的路徑之一,你必須寫訪問,這將是OURPYPKGPATH=/python/path/with/write/access

如果沒有這樣的PYTHONPATH存在我們將使我們自己在我們的主目錄,並確保蟒蛇可以看到它的未來:

mkdir ~/.ourPyPkgPath 
echo 'export PYTHONPATH=$PYTHONPATH:~/.ourPyPkgPath' >> ~/.profile 

在這種情況下,我們將使用OURPYPKGPATH=~/.ourPyPkgPath

現在安裝沼澤

easy_install -d $OURPYPKGPATH 'http://pypi.python.org/packages/source/s/swampy/swampy-2.1.1.tar.gz' 

現在,應該是剛剛的情況下,或者source ~/.profile或註銷並再次,爲了設置PYTHONPATH環境變量。

+0

另一種解決方案是,如果您有對python site-packages目錄的寫入訪問權限,那麼將使用distutils.sysconfig中的'OURPYPKGPATH = \'python -c「import get_python_lib ; print(get_python_lib())''' –

+0

我也有類似的問題。我已經使用pip安裝統計信息,並且可以看到 find/-name「statsd」 /usr/local/lib/python2.7/dist-packages/statsd 您能解釋爲什麼會發生這種情況嗎? 但是,當我在我的代碼中運行導入statsd,我得到一個導入錯誤。 –

0

是否安裝了沼澤模塊?如果沒有,請按照these instructions

要運行一個獨立的腳本,你可以把你的代碼下面的塊中:

if __name__ == '__main__': 
    world = TurtleWorld() 
    bob = Turtle() 
    wait_for_user() 

這告訴Python來執行代碼,如果腳本被直接調用。因此,如果您在swampFunction之類的函數中使用了此函數,並且您從其他腳本調用該函數,則上述塊將不會運行。

+0

雖然,我會認爲錯誤會有所不同。 – 2012-06-28 19:24:02

+0

對不起,我在完成之前意外保存了這個問題。我在這裏解釋了沼澤的安裝。感謝您的快速回復。 – Whonut

+0

@ user1485047您是使用virtualenv還是安裝了任何其他版本的python?在控制檯打開蟒蛇,然後輸入:'從distutils.sysconfig進口get_python_lib'然後 '打印(get_python_lib())'。它說什麼? –

1

另外,我的PYTHONPATH有 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/swampy' 末 。雖然它有兩次,但我不知道 是否重要。

你在手動添加它嗎?您應修改PYTHONPATH如果你在非標準位置安裝軟件包 - 換句話說,如果你使用pipeasy_install但希望程序包可到Python全球。

爲了消除這種頭痛,建議使用虛擬Python環境,你可以創建一個使用virtualenv。一旦你安裝了virtualenv:

[email protected]:~$ virtualenv --no-site-packages swampy 
The --no-site-packages flag is deprecated; it is now the default behavior. 
New python executable in swampy/bin/python 
Installing distribute.............................................................................................................................................................................................done. 
Installing pip...............done. 
[email protected]:~$ source swampy/bin/activate 
(swampy)[email protected]:~$ pip install swampy 
Downloading/unpacking swampy 
    Downloading swampy-2.1.1.tar.gz (46Kb): 46Kb downloaded 
    Running setup.py egg_info for package swampy 

Installing collected packages: swampy 
    Running setup.py install for swampy 

Successfully installed swampy 
Cleaning up... 
(swampy)[email protected]:~$ python 
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from swampy.TurtleWorld import * 
>>> quit() 
(swampy)[email protected]:~$