Python 2.7到3.4子进程Issu

2024-05-19 01:08:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调用另一个程序,其代码如下所示:

import subprocess
lc="/package/bin/program --do stuff"
command_list = lc.split()
ljs=subprocess.Popen(command_list,stdout=subprocess.PIPE)
ljs.communicate()[0]

该字符串在UNIX命令行中运行良好,代码在python2.7中运行良好。但是,在Python3.4中,我得到这样一个错误:

File "/package/bin/program", line 2, in <module>
    from package import module
ImportError: No module named package

“/package/bin/program”从包中的另一个文件调用依赖项,我认为这是核心问题。我打电话给其他在3.4中运行良好的程序。你知道吗

3.4中有什么变化可能导致这种情况?你知道吗

(很抱歉,代码太神秘了-我打电话给公司内部工具,我不能在这里公开)。你知道吗


Tags: 代码import程序packagebinprogramdocommand
2条回答

上面的注释有助于探索这个问题,但归根结底,这似乎是一些权限冲突-在命令修复问题之前添加一个sudo -u <user>。仍然不清楚为什么Py3需要这个,而Py2不需要,但也许我需要与其他内部用户更密切地探讨这个问题。你知道吗

谢谢!你知道吗

问题是subaccess实例的工作目录是bashshell的默认目录。要设置新的工作目录,请将cwd中的Popen参数设置为工作目录。你知道吗

举个例子:

subprocess.Popen(['random' ' command'], stdout = subprocess.PIPE, cwd='C:/Path/To/Working/Directory/')

相关问题 更多 >

    热门问题