为什么我导入模块时Python会执行它,我该如何停止?

277

我正在编写一个Python程序,可以通过两种方式运行:第一种方式是调用python main.py,它会以友好的方式提示用户输入,然后通过程序运行用户的输入。另一种方式是调用python batch.py -file-,它将跳过所有友好的输入收集,并在单个批处理中运行整个文件的输入。

问题是当我运行batch.py时,它会从main.py导入一些变量/方法等,当它运行此代码时:

import main

在程序的第一行,它立即报错,因为它试图运行main.py中的代码。

我该如何停止Python运行我正在导入的main模块中包含的代码?


https://dev59.com/bHRC5IYBdhLWcg3wD87r - CristiFati
12个回答

-2

虽然你不能在不运行代码的情况下使用import,但是你可以通过使用numpy.savez以一种相当迅速的方式输入你的变量,将变量作为numpy数组存储在.npz文件中。之后,你可以使用numpy.load加载这些变量。

scipy文档中查看完整描述。

请注意,这仅适用于变量和变量数组,而不适用于方法等。


-5

尝试只从main.py中导入所需的函数?因此,

from main import SomeFunction

可能是你在batch.py中定义的函数与main.py中的函数同名了,当你导入main.py时,程序运行的是main.py中的函数而不是batch.py中的函数;尝试上述方法应该能解决这个问题。我希望如此。

至少在Windows上,它不会这样。 - Martín Coll
2
“import main”不会将main中的所有内容导入到当前命名空间中。它只会在当前命名空间中添加一个单独的“main”符号,以避免发生冲突。 - remram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接