在ipython里运行python脚本

是否有可能从ipython里面运行一个python脚本(不是模块)而不指出它的path? 我试图设置PYTHONPATH,但它似乎只适用于模块。 我想执行

%run my_script.py 

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

从“my_script.py”目录中,你可以简单地做:

 %run ./my_script.py 

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

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

还有一个内置函数execfile(文件名),将做你想要的

如何在Ipython中运行脚本

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

这应该做到这一点

%run magic有一个参数file_finder ,它用来获取要执行的文件的完整path(参见这里 ); 正如你注意到的那样,它只是在当前目录中查找,如果需要附加“.py”。

似乎没有办法 %run magic中指定要使用哪个文件查找器,但是没有什么可以阻止您定义自己的魔法命令,该命令会调用%run相应的文件查找器。

作为一个非常讨厌的黑客攻击,你可以用你自己的file_finder覆盖默认的file_finder

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

说实话,IPython API正在发生变化,就像定义你自己的魔法一样,它可能继续工作。