我打电话另一个程序使用了一段代码,看起来像这样:Python的2.7到3.4版本子过程
import subprocess
lc="/package/bin/program --do stuff"
command_list = lc.split()
ljs=subprocess.Popen(command_list,stdout=subprocess.PIPE)
ljs.communicate()[0]
串工作正常,请在UNIX命令行和代码工作在Python 2.7。但是,在Python 3.4,我得到这样的错误:
File "/package/bin/program", line 2, in <module>
from package import module
ImportError: No module named package
“/包/箱/程序”呼吁从在这里包装的另一个文件,我认为这是核心问题的相关性。我打电话给3.4中正常工作的其他程序。
3.4中有什么变化可能导致这种情况?
(对不起,隐藏代码 - 我打电话给公司内部工具,我不能在这里公开)。
文件'bin/program'是否存在于当前工作目录中? – falsetru
我假设'bin/program'是一个Python 2.7应用程序?也许在你传递给子进程的环境中有一些东西会导致它在模块的3.4路径中查找。检查'os.environ'中的内容,尤其是PYTHONPATH。你也可以看看'bin/package'中的第一行,看它的“shebang”是否指向右边的python。 – tdelaney
噢,我假设你没有在虚拟环境中这样做? – tdelaney