在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正在发生变化,就像定义你自己的魔法一样,它可能继续工作。