2017-03-04 189 views
1

我正在編寫我自己的模塊mymodule。它包含了這一點:(Python)相對導入最佳做法(導入x或from。import x)

myroot 
|-mymodule 
| |-file1 
| |-file2 
| 
|-tests 
| |-... 
| 
|-... 

file1我想導入file2。首先我使用from . import file2,因爲這似乎是最佳實踐 - 因爲如果我在命名空間中犯了錯誤(例如,當該文件2有我已經使用過的名稱或類似的東西),那麼將不會有任何問題,並且它也更好我想從子模塊導入文件)。


然後,我改變,因爲測試與這些相對進口麻煩只使用import file2。我已經描述過這個問題here


而且現在有沒有的.問題與進口因爲安裝模塊時,他們不工作了。 (我把它安裝到我自己的電腦上。)


有什麼更好?如何避免由.以外的進口引發的問題? (我知道,可以注意不要使用已經使用過的名字,但是我幾乎不能相信某些可能會讓別人因爲他使用我的模塊而導致程序崩潰的事情

那麼:什麼是最佳實踐?爲什麼而如果沒有這樣的事情:?用什麼地方

+1

http ://stackoverflow.com/a/14132912/1622937 – jojo

回答

0

這裏是兩者之間的區別解釋

這意味着,需要導入腳本的單件的不同方式。當它們以不同的方式運行時

這意味着wha T I要做的不是決定導入我應該使用,但使用類似的東西的哪一種方式:

if is_run_as_unittest: 
    import file2 
else: 
    from . import file2 

所以我必須知道它是否是一個單元測試或沒有。 (我假設這也適用,如果腳本是從單元測試導入的,至少最重要的是主腳本(或頂級模塊,無論)是否作爲單元測試運行或不。