2013-11-24 58 views
2

我是python的新手,試圖通過this教程感受python保險絲。我用pip安裝了pythonfuse。我通過下載dmg並在os x上安裝來安裝os x fuse。當我從教程運行此行代碼from fuse import FUSE, FuseOSError, Operations我看到這一點:如何在導入包時調試「無法導入」錯誤

akh2103$ python myfuse.py 
Traceback (most recent call last): 
    File "myfuse.py", line 10, in <module> 
    from fuse import FUSE, FuseOSError, Operations 
ImportError: cannot import name FUSE 

現在看來似乎找不到保險絲包,無法找到蟒蛇保險絲包或找不到FUSE,包中的FuseEurror和操作方法。哪一個?當我輸入import fuse Python去尋找熔絲包的時候?我習慣於在java中使用類路徑:是否有python等價物?我對python很陌生。我如何開始調試。

+0

的http://文檔。 python.org/2/tutorial/modules.html#the-module-search-path – freakish

回答

0

它看起來在/庫/ Python/<版本>/site-packages。

您可能有多個版本,可能是問題的原因。

找出pip安裝保險絲的位置。

您可以使用PYTHONPATH環境變量來添加其他文件夾。

0

找到了保險絲模塊(否則您會看到「No module named fuse」)。您得到的錯誤意味着在模塊保險絲中找不到「FUSE」符號。

我的猜測是FUSE有幾個python綁定,你可能正在看一個不同於你正在加載的模塊的教程。另一種選擇是在不同版本之間庫中的一些劇烈變化。

如果你想看到一個模塊導出的所有符號,使用dir()

import fuse 
dir(fuse) 
0

說,這是你的目錄結構:

myapp/ 
    firstpackage/ 
     __init__.py 
     firstmodule.py 
    secondpackage/ 
     __init__.py 
     secondmodule.py 
    __init__.py 
    myfirstapp.py 

firstmodule.py

def first_function(data): 
    return data 

def second_function(data): 
    return data 

現在讓我們說我們正在從:mod:`myfirstapp`工作。

如果我們想訪問:FUNC:`first_function`,我們會導入,如:

from myapp.firstpackage.firstmodule import first_function 
print first_function('foo') 

:MOD:`__init__`在 'firstpackage' 目錄,可以:MOD:`firstmodule`被訪問從它的目錄之外。在目錄中包含:file:`__init __。py`使得該目錄成爲一個Python包。

然而,這是更好的做法是導入整個模塊,如:

import myapp.firstpackage.firstmodule as firstmodule 
print firstmodule.first_function('foo') 
print firstmodule.second_function('bar') 

另一種方法是:

from myapp.firstpackage import firstmodule 
print firstmodule.second_function('foo') 

這樣,一切都從你的模塊中訪問和可讀性更好。這就是說,你收到的:exc:`ImportError`是因爲'FUSE'不存在於:mod:`fuse`中,不管它是數據,類還是函數。

打開fuse.py並搜索'FUSE'並查看是否有任何東西出現。尋找:

def FUSE(): ... 
class FUSE(..): ... 
FUSE = ... 

我知道整個封裝/模塊教訓是關閉從你的問題的話題,但你說你是新的,所以我想我會詳細說明:P

相關問題