重新导入子脚本

时间:2016-03-29 03:56:34

标签: python python-import

我当前文件夹中有两个脚本。从scriptMain.py我致电scriptChild.py。在scriptMain.py我已经导入了numpy。但是,即使我通过执行scriptChild.py来调用import scriptChild,它仍然需要我再次在子脚本中导入numpy。

这是python中的默认行为,还是是否有办法告诉子脚本识别父脚本导入的所有模块?

如果有帮助我使用python 3.5.1和spyder作为我的编辑器。

EDIT1:

进一步假设在scriptChild.py我有a=1。我还需要通过父级访问的变量a。我如何确保这样做。我试过跑

import subprocess
subprocess.call("scriptChild.py", shell=True)
没有任何运气。

编辑2:

在此处找到编辑1的解决方案:Importing a variable from one python script to another

1 个答案:

答案 0 :(得分:1)

导入你正在谈论的内容时想到的语言是C ++。使用#include指令时,Python不像C ++那样工作。 #include指令实际上告诉编译器包含您在当前源文件中指定的任何文件的源代码。这就是为什么你可以抓住父母的内容。编译器基本上将它伪装成源代码。我应该补充一点,这就是为什么必须包含防护(双重包含会导致命名冲突)。

另一方面,Python中的import语句创建了对模块的引用(它不能在源代码中替换)。这些引用仅允许您访问模块的“公共”部分,并且不会自动为您获取其他导入。它只是import语句的语义,既不是天生好也不坏。我并不是说没有办法绕过它,但这肯定是预期和默认的行为。

有关#include指令和here的详细信息,请参阅here,了解有关import / from的更多信息。