gpt4 book ai didi

ipython - sys.argv 在 Ipython 中处于交互模式时不同

转载 作者:行者123 更新时间:2023-12-02 03:13:51 24 4
gpt4 key购买 nike

当我在交互模式下使用 Ipython 运行脚本时,sys.argv 参数列表在执行的交互部分与在脚本中不同。

这是一个错误,还是我做错了什么?

谢谢!

oskar@RR06:~$ cat test.py
import sys
print(sys.argv)
temp = sys.argv

oskar@RR06:~$ ipython -i test.py -- foo bar
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
Type "copyright", "credits" or "license" for more information.

IPython 4.2.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
['/home/oskar/test.py', 'foo', 'bar']

In [1]: temp
Out[1]: ['/home/oskar/test.py', 'foo', 'bar']

In [2]: sys.argv
Out[2]: ['/usr/local/bin/ipython', '-i', 'test.py', '--', 'foo', 'bar']

最佳答案

如果我只是调用ipython,然后查看sys.argv,我会得到

In [3]: sys.argv
Out[3]: ['/usr/bin/ipython3']

您的 Out[2] 看起来一样 - 由 shell 和 Python 解释器提供的完整列表。请记住,我们正在使用 ipython import 运行 Python session :

#!/usr/bin/env python3
# This script was automatically generated by setup.py
if __name__ == '__main__':
from IPython import start_ipython
start_ipython()
/usr/bin/ipython3 (END)

但是看看ipython -h;在第一段中:

it executes the file and exits, passing the remaining arguments to the script, just as if you had specified the same command with python. You may need to specify -- before args to be passed to the script, to prevent IPython from attempting to parse them.

所以它明确地说

ipython -i test.py -- foo bar

成为(实际上)- 或运行为:

python test.py foo bar

ipython 代码有一个解析器(作为子类 argparse)处理许多不同的参数。但是它不能处理的,或者跟在 -- 后面的都放在一边,放到你的 test.py 看到的 sys.argv .

但显然 sys.argv 不是提供给交互式 session 的内容。

我想你会得到同样的效果

$ipython
In[0]: %run test.py foo bar
...

%run 保存当前的 sys.argv,并用 sys.argv = [filename] + args 构造一个新的。然后在运行 test.py 后,它会恢复 sys.argv

这不是错误,您也没有做错任何事 - 除了期望两个 sys.argv 相同。看起来在普通的 Python shell 中,两个 sys.argv 是相同的(没有 shell 本身使用的任何选项)。

关于ipython - sys.argv 在 Ipython 中处于交互模式时不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38233274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com