【问题标题】:Python program showing exceptionPython程序显示异常
【发布时间】:2015-02-24 05:58:59
【问题描述】:

我想用 python 运行下面这个程序..

            from __future__ import print_function

            import sys

            from OCC.STEPControl import STEPControl_Reader
            from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity
            from OCC.Display.SimpleGui import init_display
            from OCC.Display.WebGl import threejs_renderer
            from OCC.STEPCAFControl import STEPCAFControl_Reader

            step_reader = STEPControl_Reader()
            status = step_reader.ReadFile('./models/part_ARROWS_ASM.stp')

            if status == IFSelect_RetDone:  # check status
                failsonly = False
                step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity)
                step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity)

                ok = step_reader.TransferRoot(1)
                _nbs = step_reader.NbShapes()
                aResShape = step_reader.Shape(1)
            else:
                print("Error: can't read file.")
                sys.exit(0)
            #display, start_display, add_menu, add_function_to_menu = init_display()
            #display.DisplayShape(aResShape, update=True)
            #start_display()

            my_renderer = threejs_renderer.ThreejsRenderer(background_color="#123345")
            my_renderer.DisplayShape(aResShape)

没有这个模块 OCC.STEPCAFControl 可以成功运行。运行上面的程序后发现下面的错误。

            Traceback (most recent call last):
              File "D:\software\python\pythonocc-core-master\examples\core_load_step_ap203.py", line 26, in <module>
                from OCC.STEPCAFControl import STEPCAFControl_Reader
            ImportError: No module named 'OCC.STEPCAFControl'

收到此错误后,将 OCC.STEPCAFControl 此模块粘贴到 OCC 文件夹中,此问题已解决,但显示另一个异常,如下所述。

            Traceback (most recent call last):
              File "D:\software\python\pythonocc-core-master\examples\core_load_step_ap203.py", line 26, in <module>
                from OCC.STEPCAFControl import STEPCAFControl_Reader
              File "C:\Python34\lib\site-packages\OCC\STEPCAFControl.py", line 28, in <module>
                _STEPCAFControl = swig_import_helper()
              File "C:\Python34\lib\site-packages\OCC\STEPCAFControl.py", line 24, in swig_import_helper
                _mod = imp.load_module('_STEPCAFControl', fp, pathname, description)
              File "C:\Python34\lib\imp.py", line 243, in load_module
                return load_dynamic(name, filename, file)
            ImportError: DLL load failed: The specified module could not be found.

如何解决这个问题?有什么建议吗?

【问题讨论】:

    标签: python step


    【解决方案1】:

    python 模块可能正在尝试加载一个名为 _STEPCAFControl.pyd 的 DLL (我猜是扩展名)。如果您有一个具有此名称的 STEPCAFControl.dll,您可以将其重命名为 _STEPCAFControl.pyd,它可能会起作用。如果名称不正确,则需要查看 STEPCAFControl.py 文件,找到 .DLL 文件名。

    【讨论】:

    • 感谢您的回复。我在 OCC 文件夹中有这个文件 _STEPCAFControl.pyd。我检查了这个 STEPCAFControl.py 文件,但它不包含任何扩展名为 .DLL 的文件名。
    • 这是您需要的文件,但它必须位于正确的位置,以便 DLL 加载器找到它。与其解决此问题并立即遇到下一个问题,更好的方法是正确安装您需要的组件。
    • @tripleee 基本上我已经安装了包含 OCC 文件的 PythonOCC0.16.exe 文件。它安装了 OCC 模块,但缺少一些模块,例如缺少 STEPCAFControl.py。所以我不知道如何解决这个问题?
    • 这个.pyd文件(实际上是一个dll)也有可能是用不同版本的python编译的,当你尝试加载它时没有链接。您需要与提供此文件的人核实以查看需要哪个 python。
    【解决方案2】:

    对于 Windows 上的科学 Python,最好的办法是安装 WinPython、Python(x,y)、Enthought Python 或 Anaconda,而不是尝试手动安装所有东西。其中任何一个都将安装您可能需要的大多数软件包,并且应该正确配置它们。

    【讨论】:

    • 安装了 WinPython 但仍然显示同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    相关资源
    最近更新 更多