python - 重新导入子脚本中的模块

标签 python python-import

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

这是Python中的默认行为吗?或者有没有办法告诉子脚本识别父脚本导入的所有模块

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

编辑1:

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

import subprocess
subprocess.call("scriptChild.py", shell=True)

没有任何运气。

编辑2:

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

最佳答案

在导入你所说的语言时,我想到的语言是 C++。当您使用 #include 指令时,Python 的工作方式与 C++ 不同。 #include 指令实际上告诉编译器包含您在当前源文件中指定的任何文件的源代码。这就是为什么您可以获取父级的内含物。编译器本质上是在源代码中为您伪造了它。我应该补充一点,这就是为什么需要包含防护(双重包含会导致命名冲突)。

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

参见here有关 #include 指令和 here 的更多信息有关import/from的更多信息。

关于python - 重新导入子脚本中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275136/

相关文章:

javascript - 在 Python 中调用匿名函数而不将它们分配给变量

javascript - 对多个租户具有良好性能的键/值存储

python - Flask错误处理程序,回滚mysql异常

python - 我如何从加载了 imp 的模块中获取 `import *`?

python-3.x - 如何将自己的模型导入到myproject/alembic/env.py中?

python - 无法导入数据类模块

Python最佳实践: how to alias a module

python - 如何使用正确的大小写获取 python 脚本的路径?

python - 在 python 和 IPython 中导入本地模块

python - 将一列的值分成两列