python - 如何让 Maven 与 Python 子进程一起工作?

标签 python maven subprocess

我正在尝试编写 Python 脚本来自动执行一些 Maven 命令。

以下 Python 代码不起作用:

import subprocess
args = ['mvn', '-version']
process = subprocess.Popen(args, stdout=subprocess.PIPE)

导致以下错误:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    process = subprocess.Popen(args, stdout=subprocess.PIPE)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

下一步,我向子进程提供 mvn 二进制文件的完整路径:

import subprocess
args = ['/usr/local/Cellar/maven/3.2.3/libexec/bin/mvn', '-version']
process = subprocess.Popen(args, stderr=subprocess.PIPE)
out, err = process.communicate()

此命令更进一步,但打印 err 显示以下投诉:

Error: JAVA_HOME is not defined correctly.
  We cannot execute /usr/libexec/java_home/bin/java

作为完整性检查,我在自己的终端上验证 JAVA_HOME 是否设置正确:

$ mvn -version
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T16:58:10-04:00)
Maven home: /usr/local/Cellar/maven/3.2.3/libexec
Java version: 1.8.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.5", arch: "x86_64", family: "mac"

我还可以在终端上轻松运行 mvn

我的问题是:为什么子进程不能运行 mvn,我怎样才能让它这样做?

最佳答案

使用

process = subprocess.Popen(args,shell=True)

关于python - 如何让 Maven 与 Python 子进程一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420087/

相关文章:

python - 如何使用 `ibpy` 从 Interactive Broker 获取历史股票数据?

java - 如何使用 JRuby 正确打包?

python - 为什么 shell=True 和 shell=False 做同样的事情?

python - 在 Python 中运行游戏循环时多线程显示游戏分数?

python - 如何使用独立的 stdout、stderr 和 stdin fork 一个新进程?

python - 在 Python 中寻找 print 的替代方案

python - (numpy) FFT 阵列的幅度错误(?)?

python - Python单元测试中多行字符串的比较

java - 如何从我的 Maven 构建中排除资源,packagingExcludes 不起作用

java - maven3-maven-antrun-插件- "failed to create task or type if"