2010-03-16 105 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() 
相关问题