Where to do package imports when importing multiple python scripts?
这可能是以前的答案,但我找不到任何解决我问题的方法。
所以,我有两个文件。
1 2 3 | | |-- test.py |-- test1.py |
测试1.py如下
1 2 | def fnc(): return np.ndarray([1,2,3,4]) |
我尝试从测试中调用test1并像这样调用函数
1 2 | from test1 import * x = fnc() |
现在我很自然地得到了
我试图将test和test1中的import编写为
1 | import numpy as np |
但是,我还是得到了错误。这可能很愚蠢,但我到底错过了什么?
感谢您的帮助。事先谢谢。
每个python模块都有自己的名称空间,因此如果test1.py中的某些函数依赖于numpy,则必须在test1.py中导入numpy:
1 2 3 4 5 6 | # test1.py import numpy as np def fnc(): return np.ndarray([1,2,3,4]) |
如果test.py不直接使用numpy,则不必再次导入它,即:
1 2 3 4 5 6 7 8 9 10 | # test.py # NB: do NOT use 'from xxx import *' in production code, be explicit # about what you import from test1 import fnc if __name__ =="__main__": result = fnc() print(result) |
现在,如果test.py还想使用numpy,它也必须导入它——正如我所说,每个模块都有自己的名称空间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # test.py # NB: do NOT use 'from xxx import *' in production code, be explicit # about what you import import numpy as np from test1 import fnc def other(): return np.ndarray([3, 44, 5]) if __name__ =="__main__": result1 = fnc() print(result1) result2 = other() print(result2) |
请注意,如果您在python shell中测试代码,那么仅仅修改源代码并在python shell中重新导入代码将无法工作(每个进程只加载一次模块,随后的导入将从
大多数情况下,你需要在你有这些文件的目录中输入init。只需尝试在.py文件所在的目录中创建in it.py文件,看看是否有帮助。
1 | touch __init__.py |