【问题标题】:python import from subprocess fails从子进程导入python失败
【发布时间】:2017-05-20 00:40:13
【问题描述】:

我一直在研究一些 makefile,它们调用一些 python 脚本来执行各种任务。到目前为止,我一直在安装 Ubuntu 16.04(64 位)的机器上makeing。今天,我尝试使用相同的 makefile 在 Lubuntu 16.04 的旧 32 位机器上构建,但在调用 Python 脚本时失败。

一开始我以为我的Python版本不够新,但是我也安装了Python 3.5,我在makefile中把行改成python3还是失败:

python3 /home/morane/Documents/Programming/ConnectX/cxPythonTools/RunUnitTests.py -t /home/morane/bin/tests/unit/cxUnitTests.out -l /home/morane/bin/tests/unit/log/unitTests.log
Traceback (most recent call last):
  File "/home/morane/RunUnitTests.py", line 41, in <module>
    from subprocess import CREATE_NEW_CONSOLE
ImportError: cannot import name 'CREATE_NEW_CONSOLE'
Makefile:51: recipe for target 'unittests' failed
make: *** [cxbaseunit] Error

为了测试,我尝试过直接在Python shell中重复报错:

Python 3.5.2+ (default, Sep 22 2016, 12:18:14) 
[GCC 6.2.0 20160927] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> from subprocess import CREATE_NEW_CONSOLE
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'CREATE_NEW_CONSOLE'

它仍然失败。有谁知道怎么回事?

问候

【问题讨论】:

    标签: python makefile


    【解决方案1】:

    您似乎在 Linux 中运行。 CREATE_NEW_CONSOLE 常量仅在 Windows 上可用。

    https://docs.python.org/3/library/subprocess.html#subprocess.CREATE_NEW_CONSOLE

    特别是第 17.5.4 节的标题:

    STARTUPINFO 类和以下常量仅在 Windows 上可用。

    【讨论】:

    • 你是对的,但为什么它可以在我的 Linux 64 位操作系统上运行?我什至没有收到警告。
    • 在我的介绍中说它可以在我的 Ubuntu 64 位机器上运行。如果我不够清楚,请告诉我我会编辑它。
    • 至于那个....我不太确定。你介意分享 RunUnitTests.py 的内容吗?也为之前的评论道歉,我没有完全阅读介绍(我的错!)。
    • 嗯...我可能完全遗漏了一些东西,但在您导入它之后,单元测试文件中似乎没有使用CREATE_NEW_CONSOLE。是否可以简单地删除它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2011-12-25
    • 2012-01-27
    • 2016-04-06
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多