代码之家  ›  专栏  ›  技术社区  ›  Baron Yugovich

无法pip安装javabridge

  •  2
  • Baron Yugovich  · 技术社区  · 8 年前

    Ubuntu 18.04,python 2.7版本

    我试过了

    sudo pip install javabridge
    

    我明白了

          Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-voWMrv/javabridge/setup.py", line 396, in <module>
        ext_modules=ext_modules(),
      File "/tmp/pip-install-voWMrv/javabridge/setup.py", line 131, in ext_modules
        library_dirs = [os.path.dirname(jvm_so)]
      File "/usr/lib/python2.7/posixpath.py", line 122, in dirname
        i = p.rfind('/') + 1
    AttributeError: 'NoneType' object has no attribute 'rfind'
    
    ----------------------------------------
    

    命令“python setup.py egg_info”失败,错误代码为1 in/tmp/pip install voWMrv/javabridge/

    我能做到

    sudo pip install javabridge==1.0.16
    

    但事实证明我需要最新的,1.0.17,我仍然得到上面的错误。

    这个命令

    find /usr/lib/jvm/java-11-openjdk-amd64 -type f -name "*jvm.so"
    

    给予

    /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
    

    然后我跑了

    JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    ~$ JDK_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    

    最后

    sudo pip install javabridge --user myName
    

    同样的错误

    Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-install-i61jKx/javabridge/setup.py", line 396, in <module>
            ext_modules=ext_modules(),
          File "/tmp/pip-install-i61jKx/javabridge/setup.py", line 131, in ext_modules
            library_dirs = [os.path.dirname(jvm_so)]
          File "/usr/lib/python2.7/posixpath.py", line 122, in dirname
            i = p.rfind('/') + 1
        AttributeError: 'NoneType' object has no attribute 'rfind'
    

    我也试过了

    JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 JDK_HOME=/usr/lib/jvm/java-11-openjdk-amd64 pip install javabridge --user
    
    Collecting javabridge
      Using cached https://files.pythonhosted.org/packages/68/87/0b016838c2a33b46b8775a3890150c93507931127cf62e9ccf27ac20db34/javabridge-1.0.17.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-install-QDCLar/javabridge/setup.py", line 396, in <module>
            ext_modules=ext_modules(),
          File "/tmp/pip-install-QDCLar/javabridge/setup.py", line 131, in ext_modules
            library_dirs = [os.path.dirname(jvm_so)]
          File "/usr/lib/python2.7/posixpath.py", line 122, in dirname
            i = p.rfind('/') + 1
        AttributeError: 'NoneType' object has no attribute 'rfind'
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   hoefling    8 年前

    你好像遇到了 this issue . javabridge 包不会更新为Java 9/10/11中有关JRE目标目录(一个中间目录,以删除的目标架构命名)的重构的更改,因此您目前只能使用Java 8。我就是这样安装的 爪哇桥 成功地 ubuntu:latest 码头集装箱:

    $ apt update
    $ apt install software-properties-common
    $ add-apt-repository ppa:webupd8team/java
    $ apt install openjdk-8-jdk
    $ update-alternatives --config java
    

    这将为您提供到OpenJDK 8的路径,类似于 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java ,删除 jre/bin/java 获取JDK根的后缀。

    现在安装 爪哇桥 :

    $ JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 pip install javabridge --user
    Installing collected packages: javabridge
      Running setup.py install for javabridge ... done
    Successfully installed javabridge-1.0.17
    
        2
  •  0
  •   phd    8 年前

    https://pythonhosted.org/javabridge/installation.html#dependencies :

    Javabridge需要Python 2.6或更高版本、NumPy、Java开发工具包(JDK)和C编译器。

    sudo apt install python2.7 python-numpy openjdk-8-jdk gcc