windows下安装py4j

今天早上看stackoverflow时看到http://stackoverflow.com/questions/20754129/how-to-call-java-from-python-using-py4j这个问题很想学习下py4j的用法,正好最近在学习基础的python知识,对于引进一些非原生模块,作为新手的我有时候还是感到很迷惑:

比如我引入reportlab模块时,下载的是exe文件直接安装就行了;在比如我引入BeautifulSoup-3.2.1模块时,下载的是zip文件,解压出来后运行setup.py然后生成两个pyc文件,将他们拷入C:\Python27(python安装目录)\Lib下就行了。

今天安装py4j时遇到了一些问题(windows 7安装),总结如下(具体安装步骤请移步http://blog.csdn.net/jetway_wmn/article/details/7009901,就不详细列举):

1、下载:https://pypi.python.org/pypi/py4j 下载zip文件

2,、解压后运行setup.py

3、当安照http://blog.csdn.net/jetway_wmn/article/details/7009901上说要把py4j加入PYTHONPATH时,我先这样设置的:

sys.path.append('C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j')
但是当运行
from py4j.java_gateway import JavaGateway
时报错了:
Traceback (most recent call last):
  File "", line 1, in 
    from py4j.java_gateway import JavaGateway
ImportError: No module named py4j.java_gateway
我百思不得其解,后来我捣腾了一段时间后,发现引入的时候都是py4j.后面加模块名,然后我想是不是我的PYTHONPATH是否应该设置到上一层目录:

del sys.path[9]
sys.path.append('C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src')
然后成功啦!原来python也像java一样文件夹表示成包形式(个人理解),所以刚开始把PYTHONPATH设置到py4j目录,它永远不会找到培育py4j下面的py4j这个文件夹了!!


接着开始尝试啦:

>>> from py4j.java_gateway import JavaGateway
>>> gateway = JavaGateway()
>>> random = gateway.jvm.java.util.Random()


额,终于还是出现问题

Traceback (most recent call last):
  File "", line 1, in 
    random = gateway.jvm.java.util.Random()
  File "C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j\java_gateway.py", line 708, in __getattr__
    '\n' + END_COMMAND_PART)
  File "C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j\java_gateway.py", line 339, in send_command
    connection = self._get_connection()
  File "C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j\java_gateway.py", line 295, in _get_connection
    connection = self._create_connection()
  File "C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j\java_gateway.py", line 302, in _create_connection
    connection.start()
  File "C:\Users\Administrator\Downloads\py4j-0.8\py4j-0.8\src\py4j\java_gateway.py", line 409, in start
    raise Py4JNetworkError(msg)
Py4JNetworkError: An error occurred while trying to connect to the Java server

提示没有启动java server,最后发现我没有读完整文章~~~ ,还得在先建一个java类(把py4j0.8.jar在解压文件的py4j-0.8\py4j-java中引入类中),

GatewayServer server = new GatewayServer(app);
	    server.start();
然后在在pyhon中调用java方法就行了~


你可能感兴趣的:(python,py4j)