是否可以从ipython内部运行python脚本(而不是模块)而不指示其路径?我试图设置PYTHONPATH但它似乎只适用于模块。 我想执行
%run my_script.py
不在包含该文件的目录中。
答案 0 :(得分:94)
从“my_script.py”目录中你可以做到:
%run ./my_script.py
答案 1 :(得分:21)
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
一样。