2010-03-16 84 views
0

我有一個模塊「B」,我想從腳本「C」運行它,我想在「B」中調用全局變量,就像它們在「C」根中一樣。另一個問題是,如果我進口的「B」 sys當我運行「C」它不會看到sys如何從其他腳本運行python腳本並將其根目錄放在根目錄下?

# NameError: global name 'sys' is not defined #

我該怎麼辦?

+1

看起來相當哈克。也許如果你給我們一個真實的例子,我們將有想法如何以正確的方式做到這一點? – 2010-03-16 13:26:07

+1

一般來說,你不想這樣做。模塊非常適合將對象保存在與主程序不同的命名空間中。 – 2010-03-16 15:26:41

回答

5

當您導入模塊B(如import B)時,將會解釋B中的每一行。我認爲這就是你說你想運行它時的意思。要引用B的命名空間中的成員,可以獲取它們:

B.something_defined_in_B

如果您希望在C中明確使用sys,則還需要在C之內導入它。

1

它在你的PYTHON_PATH中嗎?

如果不是,在腳本C的初始化的.py

import os, sys 
sys.path.append('/PATH/TO/MODULE/B') 

然後,在模塊C

from B import * 
something_defined_in_B() 
相關問題