是否可以从 ipython 内部运行 python 脚本(不是模块)而不指示其路径?我试图设置 PYTHONPATH 但它似乎只适用于模块。我想执行
%run my_script.py
不在包含该文件的目录中。
从“my_script.py”的目录中,您可以简单地执行以下操作:
%run ./my_script.py
import os
filepath='C:\\Users\\User\\FolderWithPythonScript'
os.chdir(filepath)
%run pyFileInThatFilePath.py
应该这样做
魔术%run
有一个参数file_finder
,用于获取要执行的文件的完整路径(请参见此处);正如您所注意到的,它只是在当前目录中查找,并在必要时附加“.py”。
似乎没有办法从魔术中指定要使用哪个文件查找器%run
,但是没有什么可以阻止您定义自己的魔术命令,该命令%run
使用适当的文件查找器调用。
作为一个非常file_finder
讨厌的黑客,你可以用你自己的覆盖默认值:
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
老实说,按照 IPython API 的变化速度,这很可能会继续发挥作用,就像定义自己的魔法一样。
在 python 中,模块和脚本没有区别;您可以执行脚本和模块。该文件必须在 pythonpath AFAIK 上,因为 python 必须能够找到有问题的文件。如果从目录执行 python,则该目录会自动添加到 pythonpath。
请参阅从另一个 Python 脚本调用 Python 脚本的最佳方法是什么?有关模块与脚本的更多信息
还有一个内置函数 execfile(filename) 可以做你想做的事
不完全是您问题的答案,但您可以在脚本执行结束时使用 ipython 的-i
参数进入 ipython:
ipython -i my_script.py
在脚本结束时,您将进入 ipython 提示符,脚本的变量可供您使用,就像python -i
.
对于 Python 3.6.5
import os
os.getcwd()
runfile('testing.py')