我正在创建一个运行jar文件的python程序。 jar文件和一些支持文件放在与python程序目录不同的位置。我尝试将jar文件路径添加到sys.path
,但它无法从那里访问该文件,但路径已正确添加到sys.path
。我怎样才能使这个工作?
jar文件位置:E:\data
python文件位置:C:\Users\user\Desktop
我使用subprocess
来调用jar文件,代码如下:
import os
import sys
import subprocess as sp
class abc():
def __init__(self):
sys.path.append(r'E:\data')
def run(self):
print sys.path
env = dict(os.environ)
env['JAVA_OPTS'] = '-Xms256m -Xmx256m -Xss1024k'
sp.call(['java', '-jar', 'file.jar'], env=env)
if __name__ == '__main__':
o = abc()
o.run()
运行上面的代码后,我收到错误消息:
Error: Unable to access jarfile file.jar
答案 0 :(得分:4)
如果您只是更改工作目录该怎么办:
import os
cwd = os.getcwd() #current directory
os.chdir('path/to/jar')
... # run file
...
os.chdir(cwd)
答案 1 :(得分:2)
sys.path
和PYTHONPATH
执行命令时,操作系统在其系统路径(Windows上为%PATH%
)中查找命令。
没有作为参数传递的数据/文件名的查找路径。
使用sp.call()时,系统路径查找使用脚本从中启动的任何目录。因此,您需要将dir更改为E:\DATA
或使用绝对路径:
sp.call(['java', '-jar', 'E:\DATA\file.jar'], env=env)
Windows上有很多env变量:https://en.wikipedia.org/wiki/Environment_variable#Default_values