是否可以从 ipython 内部运行 python 脚本(不是模块)而不指示其路径?我试图设置 PYTHONPATH 但它似乎只适用于模块。我想执行
%run my_script.py
不在包含该文件的目录中。
import <module>
本质上与 JavaScript 或 Perl 中的 exec(<moduleSource>)
相同。
从“my_script.py”的目录中,您可以简单地执行以下操作:
%run ./my_script.py
如何在 Ipython 中运行脚本
import os
filepath='C:\\Users\\User\\FolderWithPythonScript'
os.chdir(filepath)
%run pyFileInThatFilePath.py
应该这样做
%run
魔术有一个参数 file_finder
,它用于获取要执行的文件的完整路径(请参阅 here);正如您所注意到的,它只是在当前目录中查找,并在必要时附加“.py”。
似乎没有办法指定使用哪个文件查找器 from %run
魔法,但没有什么可以阻止您定义自己的魔法命令,该命令调用 %run
合适的文件查找器。
作为一个 非常 讨厌的 hack,你可以用你自己的覆盖默认的 file_finder
:
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
老实说,按照 IPython API 的变化速度,这很可能会继续发挥作用,就像定义自己的魔法一样。
在 python 中,模块和脚本没有区别;您可以执行脚本和模块。该文件必须在 pythonpath AFAIK 上,因为 python 必须能够找到有问题的文件。如果从目录执行 python,则该目录会自动添加到 pythonpath。
有关模块与脚本的更多信息,请参阅 What is the best way to call a Python script from another Python script?
还有一个内置函数 execfile(filename) 可以做你想做的事
__name__
== '__main__
':”行结尾
不完全是您问题的答案,但您可以在脚本执行结束时使用 ipython 的 -i
参数进入 ipython:
ipython -i my_script.py
在脚本结束时,您将进入 ipython 提示符,您可以使用脚本的变量,就像 python -i
。
对于 Python 3.6.5
import os
os.getcwd()
runfile('testing.py')
runfile()
是 ipython
的命令吗?对我来说不能开箱即用。
SyntaxError: invalid syntax
此处,在 Python 控制台 上。 Debian 9 上的 Python 3.5.3。但是,适用于 IPython。%run
是一个 ipython 魔术命令,而不是 Python 语言本身的一部分。