从JAVA中调用Python脚本和MySQLdb导入
我在我的Java代码中调用一个Python脚本。以下是代码:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaRunCommand { public static void main(String args[]) throws IOException { // set up the command and parameter String pythonScriptPath = "my-path"; String[] cmd = new String[2]; cmd[0] = "python2.6"; cmd[1] = pythonScriptPath; // create runtime to execute external command Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd); // retrieve output from python script BufferedReader bfr = new BufferedReader(new InputStreamReader( pr.getInputStream())); String line = ""; while ((line = bfr.readLine()) != null) { // display each output line form python script System.out.println(line); } } }
python.py 这个能正常工作
import os from stat import * c = 5 print c
python.py 这个不能正常工作
import MySQLdb import os from stat import * c = 5 print c # some database code down
现在我正处于一个关键阶段,因为我有一个创业项目的截止日期,我需要向客户展示我的MVP项目。我本来想这样调用Python脚本。没有数据库连接和MySQLdb库时,它能正常打印任何东西。但是一旦我加上这些,它就无法运行Python脚本了。这里到底出了什么问题?难道不应该处理所有输入并运行这个过程吗?我已经安装了MySQLdb,而且这个脚本在没有Java代码的情况下可以运行。
我知道这不是解决问题的最佳方法。但为了向客户展示一些东西,我需要这个功能正常工作。有什么建议吗?
1 个回答
0
所以,我发现问题出在我用Java运行Python程序时传递的参数上。
我最开始传的第一个参数是 - python 2.6,但其实应该只写 python,而不是带上版本号,因为这样会和MySQLdB不兼容。
最后,我决定在Python代码中使用MySQL的Python连接器,而不是MySQLdB。这样一来,问题就解决了,效果非常好!