144

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

%run my_script.py

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

4

6 回答 6

152

从“my_script.py”的目录中,您可以简单地执行以下操作:

%run ./my_script.py
于 2015-03-12T16:44:31.137 回答
31

如何在 Ipython 中运行脚本

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

应该这样做

于 2015-02-11T19:12:42.043 回答
16

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

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

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

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

老实说,按照 IPython API 的变化速度,这很可能会继续发挥作用,就像定义自己的魔法一样。

于 2012-07-31T18:13:42.920 回答
16

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

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

还有一个内置函数 execfile(filename) 可以做你想做的事

于 2012-07-31T16:02:39.673 回答
3

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

ipython -i my_script.py

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

于 2021-07-06T21:41:50.737 回答
-2

对于 Python 3.6.5

import os
os.getcwd()
runfile('testing.py')
于 2019-04-16T16:10:13.357 回答