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