【问题标题】:Detect within IPython which CMD/Terminal call was used to start IPython在 IPython 中检测哪个 CMD/终端调用用于启动 IPython
【发布时间】:2019-05-29 02:44:34
【问题描述】:

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

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

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

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

【问题讨论】:

  • 对不起,没有骰子。但是您可以使用sys.executable 获取可执行文件

标签: python command-line terminal ipython


【解决方案1】:

您请求的信息(原始程序参数传递给带有main(int argc, char *argv) 的 C 程序)在 python 解释器级别不可用(更完整但部分,因为它不解决 python 命令和开关——解释在How do I find the exact CLI command given to Python?)

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

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

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

args = [sys.executable] + sys.argv

【讨论】:

  • 谢谢,您的回答 - 以及您指向的链接 - 帮助我解决了我的问题。然而,sys.executable 似乎总是给出当前环境的python 路径,不管控制台是通过python、ipython 还是其他方式初始化的。相反,可以简单地使用sys.argv[0],如果python.exe 用于初始化当前控制台,它会给出python 路径,但如果使用ipython.exe,它会给出ipython 路径
  • 另外,请注意,如果一个人真的想在那里使用sys.executable,那么应该使用args = [sys.executable] + sys.argv[1:]
  • 我承认我的回答不够专注于 ipython。随意提出修改以改进它并使其更适合 ipython。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2015-03-02
相关资源
最近更新 更多