如何在 Java 中使用 Jython Standalone 安装 Python 库?

Bri*_*zho 5 java jython pip

我正在尝试使用 Java 中的 Jython Standalone jar 安装 Python 库。

我的代码似乎将 PIP 7.1.2 安装在独立 jar 旁边的文件夹中,但是一旦我尝试使用 PIP 升级自身,它就会因 ZipImportError 而失败。

错误消息似乎抱怨无法打开 PIP 轮文件,但日志似乎显示它已经可以打开几次了。

import org.python.util.PythonInterpreter;

public class PipInstaller{
    public void installPip(){
        PythonInterpreter python = new PythonInterpreter();
        runEnsurePip(python);
        upgradePip(python);
        python.close();
    }

    private void runEnsurePip(PythonInterpreter python){
        StringBuilder script = new StringBuilder();
        script.append("import ensurepip\n");
        script.append("ensurepip._main()");
        python.exec(script.toString());
    }

    private void upgradePip(PythonInterpreter python){
        StringBuilder script = new StringBuilder(); 
        script.append("import pip\n");
        script.append("pip.main(['install', '--upgrade', 'pip'])"); 
        python.exec(script.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

这些是堆栈跟踪的最后几行:

File "/tmp/tmpnmI49K/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/html5lib/html5parser.py", line 27, in parse
File "/tmp/tmpnmI49K/pip-7.1.2-py2.py3-none-any.whl/pip/_vendor/html5lib/treebuilders/__init__.py", line 69, in getTreeBuilder
zipimport.ZipImportError: zipimport: can not open file: /tmp/tmpnmI49K/pip-7.1.2-py2.py3-none-any.whl
Run Code Online (Sandbox Code Playgroud)

这些是我曾经得到我现在所在的stackoverflow帖子:

在代码中安装 python 模块

如何在 Jython 中安装各种 Python 库?

我正在运行 Java 1.8、Gradle 2.14.1、Jython Standalone 2.7.1b3 和 Ubuntu 16.04