【问题标题】:ImportError: DLL load failed: The specified module could not be found. (Python rocketcea wrapper for NASA Fortran CEA)ImportError:DLL 加载失败:找不到指定的模块。 (NASA Fortran CEA 的 Python Rocketcea 包装器)
【发布时间】:2019-08-23 22:48:18
【问题描述】:

我正在尝试对 NASA 的 CEA 代码使用 rocketcea(通过 pip 安装而不是克隆 git)包装器,但是当我尝试运行他们的示例代码时,我在标题中收到以下错误:

#example code
from rocketcea.cea_obj import CEA_Obj
C = CEA_Obj( oxName='LOX', fuelName='LH2')
for mr in range(2,9):
    print(mr, C.get_Isp(Pc=100.0, MR=mr, eps=40.0) )

产生的错误(Python 3.7 从 PyCharm IDE 启动):

Traceback (most recent call last):
  File "C:/Users/George/Documents/SpaceportTXV/cea test/cea import.py", line 1, in <module>
    from rocketcea.cea_obj import CEA_Obj
  File "C:\Users\George\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rocketcea\cea_obj.py", line 51, in <module>
    import rocketcea.py_cea as py_cea
ImportError: DLL load failed: The specified module could not be found.

我正在使用 MinGW GCC 编译器套件,并且我已将 bin 和 lib 作为 Rocketcea recommends 添加到我的 PATH 以解决此问题。

我的路径:

C:\Users\George>echo %PATH%
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Users\George\AppData\Local\Programs\Python\Python37-32\Scripts\;C:\Users\George\AppData\Local\Programs\Python\Python37-32\;C:\Users\George\AppData\Local\Microsoft\WindowsApps;C:\Users\George\AppData\Local\Programs\mingw\mingw64\bin;C:\Users\George\AppData\Local\Programs\mingw\mingw64\lib;

如果有帮助,link 我的 Rocketcea 文件夹包含的内容。

如果有人对我出现此错误的原因有任何见解,我将不胜感激。我还可以添加任何可能有用的其他信息

【问题讨论】:

  • 这真的是你的 %PATH% 环境变量吗? System32(或 .dll 所在的其他标准路径)在哪里?我建议也粘贴来自echo %PATH% 的输出,以及如何启动Python。 (还有${PATH_TO_YOUR}python -c "import sys;print(sys.version)")。你从哪里启动(cmd,其他终端)?
  • 有时 DLL 错误是由缺少依赖 DLL 引起的。来自解释语言的错误消息通常很难告诉你这一点。下载Dependency Walker 并让它分析您的DLL。专门寻找缺少的依赖项,不要被它报告的其他一些事情所困扰。
  • 请添加缺少的信息:[SO]: How to create a Minimal, Reproducible Example (reprex (mcve))。您提到使用 MinGW32 构建工具套件。您正在用它构建包(部分)。你用的是什么Python
  • 我已经更改了我添加的关于 PATH 和 Python 版本的信息。我对 DLL 不是很熟悉,因为我只为科学目的编写代码,所以我不确定如何处理 Dependency Walker。

标签: python dll installation fortran wrapper


【解决方案1】:

我不知道现在是否已经找到了替代解决方案,但是在为此苦苦挣扎了几个小时之后,我找到了一种使错误消息消失的方法。这是在运行 Python 3.6.8 x64 的 Anaconda3 安装的 Windows 10 上完成的,但核心思想是在C:\ProgramData\Anaconda3\Lib\site-packages\rocketcea 中,可以导航到 .dll 文件所在的..\rocketcea\.libs。我将此 .libs 文件夹的路径添加到我的 Path 变量中,然后再次调用测试代码,它运行了。

我希望这会有所帮助。

作为旁注,我还将 python 安装文件夹中 python3.dll 文件的路径添加到 Path 变量中,但我怀疑 Rocketcea 特定的 .dll 是真正的关键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2021-06-30
    • 2016-08-19
    • 2016-08-22
    • 2018-10-23
    • 2020-04-18
    相关资源
    最近更新 更多