600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Cannot run program python: CreateProcess error=2 系统找不到指定的文件。

Cannot run program python: CreateProcess error=2 系统找不到指定的文件。

时间:2024-03-23 09:53:10

相关推荐

Cannot run program python: CreateProcess error=2  系统找不到指定的文件。

Java调用Python在Eclipse中运行报错:Cannot run program "python": CreateProcess error=2, 系统找不到指定的文件。

解决方法:

Run --》Run Configurations... --》 -Environment --》 New,--》Name设置为:PATH,--》Value设置为:python的安装路径,例如:I:\Python27

Java调用Python相关问题

如果python脚本中需要用到第三方库,则最好要用Runtime.getRuntime().exec的方法来从Java中调用python。

新建 test.py脚本

import sysdef hello(name,age,num):print('name:'+name)print('age:'+age)print('num:'+num)total = age+numprint('total:'+total)return total;if __name__ == '__main__':hello(sys.argv[1], sys.argv[2], sys.argv[3])

需要引用sys,传入的参数用sys.argv[1]、sys.argv[2]、sys.argv[3]表示。其中需要注意的是接收参数从sys.argv[1]开始,sys.argv[0]是python脚本的参数地址,没有实际作用。

__name__ == '__main__'的作用

在Python中,一个.py文件就是一个模块,一般情况下,模块的名字就是文件名(不包括扩展名.py)。

全局变量__name__存放的就是模块的名字。

__name__ 是当前模块名,当模块被直接运行时特殊变量name等于main,所以__name__就等于__main__

假如被hello.py导入时,特殊变量name等于hello,所以__hello__就不等于__main__

一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。

对于很多编程语言来说,程序都必须要有一个入口,而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

返回结果

Java调用python时,不能通过return语句来获取返回值,而只能通过print将结果写入到标准输出流中,然后在Java中通过标准输入流来读取到返回结果。

因此,如果想得到返回结果,就需要在python文件中做修改,通过print函数将需要的结果返回到Java程序中。

public static void main(String[] args) {try {String[] arguments = new String[] { "python", "I:\\test.py", "张三", "23", "100" };Process process = Runtime.getRuntime().exec(arguments);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();//java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,//返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反int re = process.waitFor();System.out.println(re);} catch (Exception e) {e.printStackTrace();}}

运行结果:

name:张三age:23num:100total:231000

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。