关于路径:在ipython中运行python脚本

Running python script inside ipython

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

1
%run my_script.py

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


在"my_script.py"目录中,您只需执行以下操作:

1
%run ./my_script.py

如何在IPython中运行脚本

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

应该可以的


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

请参阅从另一个python脚本调用python脚本的最佳方法是什么?有关模块与脚本的详细信息

还有一个内置的函数execfile(文件名),它可以满足您的需要。


%runmagic有一个参数file_finder,用于获取要执行的文件的完整路径(请参见此处);如您所注意的,它只是在当前目录中查找,必要时附加".py"。

似乎没有办法指定要从%runmagic中使用哪个文件查找程序,但是没有什么可以阻止您定义自己的magic命令,该命令使用适当的文件查找程序调用%run

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

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

老实说,以ipython api不断变化的速度,它可能会像定义自己的魔法一样继续工作。


对于python 3.6.5导入操作系统OG.GETCWD()runfile('testing.py')