2016-09-28 80 views
-1

在其中包含一個單一功能的top文件夾我有一個Python文件(helpers.py):蟒蛇:導入一個輔助函數在一個模塊中

def play(name, verbose=False): 
     if verbose: 
     print name + "with verbose on" 
    else: 
     print name + "verbose off" 

而在一個名爲project我的第二個Python文件的子文件夾(program.py ),其進口和使用helpers.py:

from .. import helpers as hp 

def main(device,verbose=False): 
    hp.play(device) 
    #here goes the code 

if __name__ == "__main__": 
    #Test the program 
    main('Foo') 
    main('Foo', verbose=True) 

兩個文件夾包含__init__.py文件以允許模塊導入。我想執行program.py文件來測試主函數。 繼How to fix "Attempted relative import in non-package" even with __init__.py我嘗試運行:

python -m top.project.program 

越來越

# /usr/bin/python: No module named top.project 

我不明白我在做什麼錯。任何幫助?謝謝

回答

0

答案是在我發佈在我的問題中的鏈接中接受的答案的評論。從哪個目錄執行python命令很重要。該代碼在執行以下shell命令時起作用:

python -m top.project.program 

僅限於top目錄。從其子目錄project執行時,它不起作用。

0

-m不表示導入;它期待着你想要執行的模塊的路徑。所以它可能需要-m top/project/program.py(儘管您可能需要提供絕對路徑)。

+0

你能舉個例子嗎? – diegus

+0

嘗試完整路徑。它給了我ValueError:嘗試在非包中的相對導入 – diegus