在ipython中运行python脚本

Tyl*_*den 113 python path ipython

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

%run my_script.py
Run Code Online (Sandbox Code Playgroud)

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

rak*_*kke 105

从"my_script.py"目录中你可以简单地做到:

%run ./my_script.py
Run Code Online (Sandbox Code Playgroud)

  • @rotton那是因为 `%run` 是一个 ipython 魔法命令,而不是 Python 语言本身的一部分。 (3认同)

Cub*_*t88 25

如何在Ipython中运行脚本

import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py
Run Code Online (Sandbox Code Playgroud)

应该这样做


Sna*_*fee 16

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

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

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


eca*_*mur 15

%run魔术有一个参数file_finder,它使用来获取完整路径文件来执行(见这里); 如你所知,它只是在当前目录中查找,如有必要,附加".py".

似乎没有要指定要使用的文件查找的方式,从%run魔术,但没有什么可以从定义自己的魔法命令调用到阻止你%run用适当的文件查找.

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

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
Run Code Online (Sandbox Code Playgroud)

说实话,按照IPython API的变化速度,可能会继续工作,因为定义自己的魔法就是.


kri*_*anp 8

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

ipython -i my_script.py
Run Code Online (Sandbox Code Playgroud)

在脚本结束时,您将进入 ipython 提示符,其中包含可用的脚本变量,就像python -i.