【问题标题】:I want to realize Popen-code from Windows to Linux:我想实现从 Windows 到 Linux 的 Popen 代码:
【发布时间】:2019-08-04 03:57:36
【问题描述】:

我想从Windows到Linux实现这段代码:

a=subprocess.Popen(['python.exe','hello.py'])

【问题讨论】:

标签: python python-3.x subprocess popen


【解决方案1】:

有两个问题。首先,python.exe 在 Linux 中被简单地称为 python,其次,python 可执行文件不在当前目录中,而是在系统路径的某个位置。要让 Linux 在路径中查找 python,您可以让 Popen 使用 shell:

a=subprocess.Popen(['python','hello.py'], shell=True)

或者您可以使用env 程序找到它:

a=subprocess.Popen(['/usr/bin/env', 'python','hello.py'])

作为第三种选择,您可以使用 Linux shebang 方法来启动 hello.py 脚本,并让 Windows 文件关联在 python 解释器中运行 hello.py,方法是做三件事:

  1. 将hello.py的第一行设为#!/usr/bin/env python
  2. 通过 chmod a+x hello.py 将文件 hello.py 标记为 Linux 中的可执行文件。
  3. 在 shell 中运行 hello.py 脚本

    a=subprocess.Popen('hello.py', shell=True)

这将使脚本在 Windows 和 Linux 中以相同的方式工作。

请注意 shebang 行:hello.py 必须使用 UNIX 行结束约定保存,否则您会得到一个模糊的“找不到 python”错误。这是由 Windows 编辑器添加的额外 '\n' 引起的,让 shell 查找名为 'python\n' 的文件——这当然不存在。您可以使用dos2unix 工具将hello.py 转换为UNIX 行尾。一旦设置为 UNIX,所有受人尊敬的文件编辑器都将保留行尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2012-08-11
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多