【问题标题】:subprocess.Popen() get OSError: [Errno 7] Argument list too long when run the code in Linux Mintsubprocess.Popen() get OSError: [Errno 7] 在 Linux Mint 中运行代码时参数列表太长
【发布时间】:2018-05-01 05:01:00
【问题描述】:

我有一段代码:

temp_dir = "/tmp/working"
p = subprocess.Popen(["python3", temp_dir + "/tmp.py"])

但是当我在 Linux Mint 18 的 bash 中运行代码时,我得到了OSError: [Errno 7] Argument list too long。但是当我在 Fedora、macOS、FreeBSD、Ubuntu 中进行测试时(它们有很多 shell:fish、zsh、...)我没有t 收到任何错误。即使我使用

print(subprocess.check_call(["python3", temp_dir + "/tmp.py"], shell=True))

,出现了同样的错误。

命令真的很短,我不知道为什么会出现这个错误。

我有数百个结果,但我无法解决我的问题。

【问题讨论】:

  • tmp.py 是否包含任何子进程调用?
  • 没有。 tmp.py 是一个小代码,它只包含print('something')
  • 你需要增加你的ulimit -s unix.stackexchange.com/a/401797

标签: python python-3.x


【解决方案1】:

当您传递shell=True 时,check_call 期望参数作为一个命令,就像您在终端中运行命令一样。尝试这个。希望会奏效。

print(subprocess.check_call(["python3 "+ temp_dir + "/tmp.py"], shell=True))

【讨论】:

  • 它仍然得到那个错误。我删除了shell=True,但没有任何改变。
  • 使用 shell=True 但删除python3之后的逗号。
  • 你可以直接从linux mint终端运行命令,即python3 /tmp/working/tmp.py。我怀疑它不会工作。
  • Haris Nadeem 已发布该链接。
【解决方案2】:

你为什么不试试这两个,看看它们是否有效

temp_dir = "/tmp/working"
p = subprocess.call("python3 " + temp_dir + "/tmp.py", shell=True)

如果不行你也可以试试

import os
command = "python3 " + temp_dir + "/tmp.py"
p = os.popen(command ,"r")

如果它不起作用,请告诉我

【讨论】:

  • 有趣,请您发布完整的错误消息跟踪。我很想知道下面发生了什么
  • 当我使用os.popen()时:File "/usr/lib/python3.5/os.py", line 1035, in popen bufsize=buffering) File "/usr/lib/python3.5/subprocess.py", line 947, in __init__ restore_signals, start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child raise child_exception_type(errno_num, err_msg) OSError: [Errno 7] Argument list too long
  • 和我想的一样。这是 python 库处理与命令一起传递的 OS 环境的方式的问题。阅读this 文章,因为它会比我解释得更好
  • 我对 Env 参数作为 input 有同样的问题。有人找到解决方案了吗?
  • 这个问题似乎从未得到解决,抱歉。问题似乎与 python 与 Linux mint 交互的方式有关。我唯一的建议是安装像 anaconda 这样的东西,它会改变你的 python 解释器,或者可能在某种 docker 容器上工作。
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2018-12-30
  • 2015-07-05
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多