我正在尝试执行一个python函数,它是在部署到awsec2的java项目(spring boot)的.py文件中编写的。
开始时,我在资源文件夹中找到了.py文件,但它不能正常工作,所以我将.py文件上载到s3,每次需要时我都从那里下载它。
我使用以下命令运行python文件:
Process processBuilder = Runtime.getRuntime().exec("python word2vec.py");
在本地它工作得很好,但是由于word2vec.py有依赖项,比如gensim,当在ec2示例(基于linux)中执行时,我得到错误“importerror:没有名为gensim的模块”,这很有意义,因为我没有在机器上安装它。
我使用intellij plugin for python在项目中创建了一个虚拟环境,并安装了gensim,这样它就可以在本地工作了,有没有办法在ec2示例中这样做呢?
由于项目打包到一个jar文件中,即使.py位于资源文件夹中,“runtime.getruntime().exec(…)”函数也无法访问它,我得到“file not found”。
有没有办法将所有内容都保存在java项目/jar中?或者我需要在ec2示例上手动安装python虚拟环境?
1条答案
按热度按时间h9a6wy2h1#
我找不到从资源中运行.py文件的方法,所以我将它们上载到s3并在运行这些脚本之前下载它们。由于.py文件非常小,所以运行速度非常快。
此外,我还必须在ec2java机器上下载并安装python虚拟环境。
这个博客帮助我理解了python虚拟环境。
以及如何在虚拟环境中使用python版本运行文件的问题。