我正在尝试从另一个模块导入变量。我的愿望是使用“导入模块”方式而不是“从x导入y”方式。 导入行有效,但是尝试从源模块打印变量时出现错误。
我有一个空的 init .py文件;所有文件init,module1和module2都位于同一文件夹中。该文件夹在sys.path中可见。 从x导入y起作用。我想只使用导入模块。 我想念什么?
module1.py:
X=8
List=[8,2,9]
ListOfStrings=["Champa","Lampa", "Dampa"]
All=[X, List, ListOfStrings, String]
print(All)\
module2.py:
import module1
import sys
for p in sys.path:
print(p)
print(X)
module1已运行,但X显示为未定义。
结果:
[8, [8, 2, 9], ['Champa', 'Lampa', 'Dampa'], 'This is a string']
theactualpath\Desktop\Work Excercises\py_test
Traceback (most recent call last):
File "theactualpath\Desktop\Work Excercises\py_test\module2.py", line 6, in <module>
print(X)
NameError: name 'X' is not defined
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "theactualpath\Desktop\Work\Excercises\py_test\module2.py"]
[dir: theactualpath\Desktop\Work Excercises\py_test]
[path: various paths from my computer, not the current working folder thou]
答案 0 :(得分:1)
您有两种选择。
引用module1命名空间:
import module1
...
print(module1.X)
将所有内容(或任何您需要的东西)从module1引入到module2命名空间:
from module1 import * # or just import whatever you need: from module1 import X
...
print(X)
答案 1 :(得分:0)
您好,欢迎来到StackOverflow。
导入模块import module1
之后,变量X
绑定到模块的名称空间,因此您必须替换
print (X)
使用
print (module1.X)
您的第一个示例(print (X)
)将从当前文件而不是模块中打印变量X
。
答案 2 :(得分:0)
使用print(X)
是错误的。您必须使用print(module1.X)