在ipython中运行python脚本

时间:2012-07-31 15:55:55

标签: python path ipython

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

%run my_script.py

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

6 个答案:

答案 0 :(得分:94)

从“my_script.py”目录中你可以做到:

%run ./my_script.py

答案 1 :(得分:21)

如何在Ipython中运行脚本

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

应该这样做

答案 2 :(得分:16)

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

有关模块与脚本的详细信息,请参阅What is the best way to call a Python script from another Python script?

还有一个内置函数execfile(filename)可以执行您想要的操作

答案 3 :(得分:15)

%run magic有一个参数file_finder,用于获取要执行的文件的完整路径(参见here);如你所知,它只是查看当前目录,必要时附加“.py”。

似乎没有办法指定哪个文件查找器使用来自 %run魔法,但没有什么可以阻止你定义你自己调用的魔术命令%run使用适当的文件查找器。

作为非常讨厌的黑客攻击,您可以使用自己的默认file_finder覆盖:

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

老实说,IPython API正在改变的速度可能会继续发挥作用,因为它定义了你自己的魔法。

答案 4 :(得分:0)

对于Python 3.6.5 导入操作系统 os.getcwd() runfile('testing.py')

答案 5 :(得分:0)

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

ipython -i my_script.py

在脚本结束时,您将进入 ipython 提示符,脚本变量可供您使用,就像 python -i 一样。