在 IPython 中检测用于启动 IPython 的 CMD/终端调用

Detect within IPython which CMD/Terminal call was used to start IPython

提问人:blipblop 提问时间:1/2/2019 最后编辑:Jason Allerblipblop 更新时间:7/10/2020 访问量:38

问:

假设我在 Windows 10 CMD 中使用以下命令启动 IPython:

 "C:\MyFolder\ipython.exe" -i --matplotlib=qt5 --InteractiveShellApp.exec_lines="['import numpy as np']"

在初始化的 IPython 控制台中,有没有办法让我准确找到用于初始化 IPython 控制台的命令(如上所述)?

如果没有,是否至少有一种方法可以检索该部分,即当前运行的 ipython 文件的确切路径?"C:\MyFolder\ipython.exe"

python 命令行 终端 ipython

评论

0赞 Jean-François Fabre 1/2/2019
对不起,没有骰子。但是你可以用sys.executable

答:

2赞 Jean-François Fabre 1/2/2019 #1

您请求的信息(传递给 C 程序的原始程序参数 - 比如 - 传递给 C 程序 )在 python 解释器级别不可用(更完整 - 但部分,因为它不涉及 python 命令和开关 - 解释在如何找到提供给 Python 的确切 CLI 命令中提供?main(int argc, char *argv))

sys.argv提供要传递给脚本的参数,包括脚本本身,但不提供 Python 命令行开关。sys.argv[0]

不过,您可以获得的一件事是已启动的可执行文件:sys.executable

所以你能做的最接近的是:

args = [sys.executable] + sys.argv

评论

0赞 blipblop 1/2/2019
谢谢,您的回答 - 以及您指向的链接 - 帮助我解决了我的问题。但是,似乎总是给出当前环境的路径,无论控制台是通过 python、ipython 还是其他方式初始化的。相反,可以简单地使用 ,如果用于初始化当前控制台,则给出 python 路径,但如果使用,则给出 ipython 路径sys.executablepythonsys.argv[0]python.exeipython.exe
0赞 blipblop 1/2/2019
另外,请注意,如果真的想在那里使用,那么应该这样做。sys.executableargs = [sys.executable] + sys.argv[1:]
0赞 Jean-François Fabre 1/2/2019
我承认,我的答案不够关注 ipython。随意提出编辑建议以改进它并使其更适合 ipython。