2014-02-11 77 views
0

我有以下問題:如何在運行時導入文件?

file1.py有我需要的功能和變量​​。 與from file1 import myclass1這是沒有問題的。 問題是,我也想從​​「發送」變量file1.py在運行​​

from file1 import myclass1在​​不工作,因爲當我編譯​​它apears一個ImportError:

pydev debugger: starting 
Traceback (most recent call last): 

    File "****\file1.py", line 13, in <module> 
     from file1 import myclass1 
    File "****\forfile1.py", line 7, in <module> 
     from file2 import myclass2 
    File "****\file1.py", line 13, in <module> 
     from file1 import myclass1 
ImportError: cannot import name s4dat_class 

那麼,如何才能ü導入文件,而運行?還是有其他方法可以做我想做的事? THX

+2

你是什麼意思的「發送」變量?如果您有兩個導入對方的模塊,通常是一個不好的跡象。請解釋你的模塊正在做什麼,需要他們互相訪問。 – BrenBarn

+0

我想你的意思是在兩個執行的腳本之間共享一個變量? – ImadOS

+0

首先我只有一個小程序(file2.py)。然後我製作了一個具有更多功能的程序(file1.py)。其中一個功能是與第一個小程序的輸出一起工作。問題是file2.py的輸入來自file1.py – Hubschr

回答

1

如果問題是「如何從模塊1導入模塊2時,從模塊1模塊2進口」,簡單的答案是「你不能」,解決的辦法是要麼

  • 合併兩個模塊,
  • 或將公共依賴關係提取到第三個模塊中,或將所需對象(提示:類和函數也是對象)作爲函數或方法params(最簡單的依賴注入形式)傳遞給第三個模塊。

完整的答案是,有解決方法(比如從一個函數體內導入),但是這是fugly和時間(大約)一個肯定的設計的味道99.8% - 你應該沒有循環依賴等等更好地治癒設計,而不是採用富有變通的解決方法。

1
在file_2.py

可以鍵入:

my_module = __import__("file_1") # assuming file_1.py in the python path. 

那麼你可以使用my_module,因爲它是file_1

但爲了才達到你想要我建議你把所有這些都是共同的東西是什麼以file_1.pyfile2_py爲例分隔文件file_3.py。那麼你可以在兩個地方導入file_3.py

相關問題