当前位置: 首页 > 知识库问答 >
问题:

从Java调用Python(Anaconda)脚本(导入库问题)

百里金林
2023-03-14

我试图从java代码调用python脚本。

public class PythonTest {
    public static void main(String[] args) throws IOException, ScriptException, InterruptedException {
        ProcessBuilder pb = new ProcessBuilder().inheritIO().command("C:/Users/emon/Anaconda3/python.exe",
                "forecast.py");
        Process process = pb.start();
        process.waitFor();
        InputStream inputStream = process.getInputStream();

        int i = 0;
        StringBuilder stringBuffer = new StringBuilder();
        while ((i = inputStream.read()) != -1) {
            stringBuffer.append((char) i);
        }
        System.out.println(stringBuffer.toString());
      }
}
from fbprophet import Prophet
import numpy as np
import pandas as pd
# import matplotlib.pyplot as plt

# plt.rcParams['figure.figsize'] = (20, 10)
# plt.style.use('ggplot')

sales_df = pd.read_csv('multiTimeline.csv')
sales_df['y_orig'] = sales_df['y']
sales_df['y'] = np.log(sales_df['y'])
model = Prophet()
model.fit(sales_df)
future_data = model.make_future_dataframe(periods=50, freq='w')
forecast_data = model.predict(future_data)
forecast_data[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
model.plot(forecast_data)
print(forecast_data)

# for index, row in forecast_data.iterrows():
#     print(
#         str(index) + " " + str(row['ds']) + " " + str(np.exp(row['yhat'])) + " " + str(
#             np.exp(row['yhat_lower'])) + " " + str(np.exp(row['yhat_upper'])))

# plt.show()
Traceback (most recent call last):
  File "google-trends-service/src/main/java/com/emon/forecast.py", line 1, in <module>
    from fbprophet import Prophet
  File "C:\Users\emon\Anaconda3\lib\site-packages\fbprophet\__init__.py", line 8, in <module>
    from fbprophet.forecaster import Prophet
  File "C:\Users\emon\Anaconda3\lib\site-packages\fbprophet\forecaster.py", line 15, in <module>
    import numpy as np
  File "C:\Users\emon\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>
    from . import _distributor_init
  File "C:\Users\emon\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in <module>
    from. import _mklinit
ImportError: DLL load failed: The specified module could not be found.
print("Hello world")

共有1个答案

宋俊艾
2023-03-14

我的猜测是这是一个环境问题。您的Python脚本使用的模块具有与之关联的二进制组件(DLL)。当您手动运行脚本时,您的环境以某种方式设置为查找该DLL。但是Java运行脚本的环境是不同的,DLL是找不到的。您的“Hello World”脚本运行良好,因为它不依赖于任何外部模块。

我建议你试着重新安装水蟒。

 类似资料:
  • 我正在从我的Java代码中调用一个Python脚本。这是代码: python.py工作 python.py不起作用 所以,我正处于一个关键的阶段,我的启动有一个最后期限,我必须向客户展示我的MVP项目,我想像这样调用Python脚本。当我在没有dB连接和MySQLdb库的情况下打印任何东西时,它起作用。但是当我包含它们时,它并不运行python脚本。这里怎么了。不是应该运行处理所有输入的进程吗。我

  • 我希望我的Windows计算机每天自动运行Python脚本,使用任务调度程序。我用Spyder(Anaconda)编写了我的Python脚本,然后我编写了一个小批量文件,看起来像这样: 请注意,我正在手动添加到我的PATH变量,以确保我的Anaconda Python发行版将正确导入必要的模块,包括和。 但当我运行此批处理脚本时,会发生以下错误: 因此,看起来Python无法导入,尽管我采取了特定

  • 我正在使用ProcessBuilder从Java调用Python(Anaconda)代码。当我只安装Python时,它工作正常。但是现在我已经删除了Python并安装了Anaconda。调用Python的代码现在不起作用。得到以下错误。 我正在使用python 3.6.1(anaconda3 4.4.0 64位)和以下代码来执行python 有人能帮我吗。

  • 我有以下目录结构: b、 py需要在a.py中导入一个类。因此,我可以在导入a之前将以下行添加到b.py。 sys.path.append(os.path.dirname(sys.argv[0])) 这是可行的,我可以从任何目录调用b.py,它也可以导入a。但是,当我在另一个目录中编写脚本以使用execfile()调用此文件时,这将失败。 我尝试了相对导入,但得到了“在非包错误中尝试相对导入” 我

  • 我有一个Java程序来调用python脚本。我使用了exec方法。请在下面找到代码片段: Python程序(从维基百科收集一部分文本)单独运行时,可以提供适当的输出。当从Java调用时,我无法从python程序获得完整的输出。 我使用ready()方法检查了BufferedReader对象的状态(如本文所述,代码进入了无限循环)。 我认为其他人也面临着类似的问题-https://stackover

  • 问题内容: 我正在尝试从python这样启动PowerShell脚本: 问题是我得到以下错误: 无法加载文件C:\ Users \ sztomi \ workspace \ myproject \ buildxml.ps1,因为在此系统上禁用了脚本的执行。请参阅“获取有关about_signing的帮助”以了解更多详细信息。 尽管事实上我很早以前确实通过键入管理员运行的PS终端来启用Powersh