首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将VirtualEnv Python作为MacOS中的PythonInterpreter

将VirtualEnv Python作为MacOS中的PythonInterpreter
EN

Stack Overflow用户
提问于 2018-07-25 08:27:37
回答 1查看 335关注 0票数 1

我目前正在寻找一种方法,通过Java从python脚本中获取一些输出。在找到jython之后,我使用PythonInterpreter发送参数并接收我期望的输出。

我的代码

代码语言:javascript
复制
    PythonInterpreter interpreter = new PythonInterpreter();
    String fileUrlPath = "/Users/me/Desktop/";
    String scriptName = "pythonScript";
    interpreter.exec("import sys\n" + "import os \n" + "sys.path.append('" + fileUrlPath + "')\n"+ "from "+scriptName+" import * \n");
    String funcName = "predictionFunction";
    PyObject someFunc = interpreter.get(funcName);

    try 
    {
        PyObject out = someFunc.__call__(new PyString(pathToImageFolder), new PyString(fileName));
        System.out.println(out);
    } 
    catch (PyException e) 
    {
        e.printStackTrace();
    }

My Problem

但是每当我启动我的程序时,它都会显示numpy module not found错误。所以我检查了python的版本,它显示了2.7.0,这是jython python解释器的版本。

但是我所有的python库都安装在path path/to/vir/env/bin的虚拟环境中。因此,我需要将java PythonInterpreter函数的解释器更改为我在虚拟环境中安装的python。

有可能吗?如果是这样的话,如果有人能帮上忙,真的很感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 08:40:21

你所要求的是不可能的。

Jython不能使用C-API扩展,包括NumPy。更改sys.path以包含安装NumPy的位置不会有任何帮助。

Jython可以使用Java包,也有用于基于数组的数字的Java包,但它们都不是NumPy的临时替代品;您必须重写所有代码才能使用完全不同的应用编程接口,而且它可能没有您所依赖的特性。

但是,如果您所要做的只是使用一些简单的字符串参数调用一些Python代码,并将字符串作为输出返回,那么只需将CPython作为一个子进程运行即可。看起来这正是您正在做的:您有一些包装器代码,它只是导入您的模块,调用一个具有两个字符串的函数,并将返回值打印为一个字符串。

步骤1:将Python代码打包到一个脚本中,该脚本通过sys.argv接受参数,并通过print输出结果。

步骤2:在安装了NumPy的virtualenv中使用普通的CPython解释器运行脚本,并使用管道捕获其输出。

第三步:没有第三步。(或者是因为地球上的女孩很容易,所以生命发现了一些混沌理论?我不知道,这都是Jeff Goldblum造成的。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51509289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档