从python运行bat文件时,它会直接从cmd运行时返回错误

时间:2013-10-15 10:26:26

标签: java python batch-file

Error occurred during initialization of VM.
Could not reserve enough space for object heap.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

bat文件具有以下命令:

java -cp stanford-corenlp-3.2.0.jar;stanford-corenlp-3.2.0-models.jar;xom.jar;joda-time.jar;jollyday.jar -Xmx3g edu.stanford.nlp.pipeline.StanfordCoreNLP -props props.properties -filelist filelist.txt

它可以从cmd窗口运行,没有错误!

我有以下python代码:

import os
import subprocess

os.chdir('C:/Users/Christos/Documents/stanford-corenlp-full-2013-06-20/')

p = subprocess.Popen(r'start cmd /c run_mouskos.bat', shell=True)

p.wait()

print 'done'

我还尝试过各种其他方法来从python执行bat文件而没有运气。如何在没有错误的情况下运行它?

2 个答案:

答案 0 :(得分:1)

我最近遇到过这个问题。我正在运行一个由uWSGI提供服务的Django应用程序。我实际上在运行uWSGI进程时将as-limit参数设置为512MB。在深入研究之后,我发现应用程序使用子进程运行的每个进程都将保持与uWSGI进程相同的操作系统限制。

将限制值增加到1GB后,我无法重现此问题。

也许这可以帮到你

答案 1 :(得分:0)

尝试明确设置堆大小:请参阅Could not reserve enough space for object heap

此设置也可能受环境变量的影响 - 您应该在批处理文件中打印变量(我认为Windows上的set命令会执行此操作)。这将允许您查看在您尝试的两种情况下变量是否相同。

当然,您需要捕获批处理脚本的输出(或使其可见),以便执行比较。