我试图从解释器内使用Python命令执行一个文件。

编辑:我试图使用变量和设置从该文件,而不是调用一个单独的进程。


当前回答

在我看来,最好的办法是:

import yourfile

修改完你的file.py

reload(yourfile)   

或者在python3中:

import imp; 
imp.reload(yourfile)

但这将使函数和类看起来像这样: yourfile。function1 yourfile.class1…

如果你不能接受这些, 最后的解决方案是:

reload(yourfile)
from yourfile import *

其他回答

假设你想要以下特性:

源文件在调试器中正常运行(文件名显示在堆栈中,等等) __name__ == '__main__'为True,因此脚本的行为与脚本相同。

exec(open('foo.py').read())特性1失败 导入foo策略失败特性2

要做到这两点,你需要:

    source = open(filename).read()
    code = compile(source, filename, 'exec')
    exec(code)

我不是专家,但这是我注意到的:

例如,如果你的代码是mycode.py,你只输入'import mycode', Python会执行它,但不会让解释器使用你的所有变量。我发现你应该输入'from mycode import *'如果你想让所有变量对解释器可用。

在我看来,最好的办法是:

import yourfile

修改完你的file.py

reload(yourfile)   

或者在python3中:

import imp; 
imp.reload(yourfile)

但这将使函数和类看起来像这样: yourfile。function1 yourfile.class1…

如果你不能接受这些, 最后的解决方案是:

reload(yourfile)
from yourfile import *

对于Python 3:

>>> exec(open("helloworld.py").read())

在运行该命令之前,请确保您在正确的目录中。

要从不同的目录运行一个文件,你可以使用下面的命令:

with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
    exec(file.read())

就做,

from my_file import *

确保不要添加.py扩展名。如果子目录中使用。py文件,

from my_dir.my_file import *