在 ipython 中运行 python 脚本

是否有可能从 ipython 内部运行一个 python 脚本(而不是模块)而不指示其路径?我试图设置 PYTHONPATH,但它似乎只适用于模块。 我想执行

%run my_script.py

而不在包含该文件的目录中。

210791 次浏览

在 python 中,模块和脚本之间没有区别; 您可以同时执行脚本和模块。该文件必须在 pythonpath AFAIK 上,因为 python 必须能够找到有问题的文件。如果从一个目录执行 python,那么该目录将自动添加到 pythonpath。

有关模块与脚本的更多信息,请参考 从另一个 Python 脚本调用 Python 脚本的最佳方法是什么?

还有一个内置的函数可执行文件(文件名) ,可以执行您想要的操作

魔法 %run有一个参数 file_finder,它用来获取要执行的文件的完整路径(参见 给你) ,正如你注意到的,它只是在工作目录中查看,附加”。如有需要,亦可使用「 py 」。

似乎没有一种方法来指定哪个文件查找器使用 来自%run魔术,但没有什么可以阻止您定义自己的魔术命令,调用到 %run与一个合适的文件查找器。

作为一个令人讨厌的 非常黑客,你可以用你自己的代码覆盖默认的 file_finder:

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder

老实说,以 IPythonAPI 的变化速度来看,它很可能像定义自己的魔法一样继续发挥作用。

如何在 Ipython 运行脚本

import os
filepath='C:\\Users\\User\\FolderWithPythonScript'
os.chdir(filepath)
%run pyFileInThatFilePath.py

应该可以了

在“ my _ script.py”目录中,您可以简单地:

%run ./my_script.py

对于 Python 3.6.5

import os
os.getcwd()
runfile('testing.py')

这并不完全是您问题的答案,但是您可以在脚本执行结束时使用 ipython 的 -i参数进入 ipython:

ipython -i my_script.py

在脚本的末尾,您将被放入 ipython 提示符中,并且脚本的变量对您可用,就像 python -i一样。