现在我正在尝试编译并运行Deep Q Learning。除了与pyximport相关的一个问题外,我已经完成了所有设置和工作。
在ale_data_set.py中,它导入pyximport以编译shift.pyx。我收到的错误:
ImportError:构建模块转换失败:[' ImportError:DLL加载 失败:动态链接库(DLL)初始化例程失败。\ n']
当我在ale_data_set.py
顶部运行这些行时,我得到同样的错误:
import numpy as np
import pyximport; pyximport.install()
import shift
事情是,有时我可以让它运行导入转移就好了。有时我会reload(pyximport)
,然后拨打pyximport.install()
和import shift
就好了。其他时候它不起作用。
对我来说有趣的是它不起作用的时间,当我退出时(通过control-c),我明白了:
Exception KeyboardInterrupt in <module 'threading' from 'C:\SciSoft
\WinPython-64bit-2.7.9.3\python-2.7.9.amd64\Lib\threading.pyc'> ignored
这似乎告诉我它仍然在后台编译,或者至少线程没有返回。对我有意义的是,它有时会起作用,我恰好在完成编译之后调用import shift
。
有谁知道可能导致这种情况的原因?
如果它只是一个线程问题,我是否可以通过编译shift
来获取该线程,以便我可以wait
呢?
编辑:我还尝试设置numpy include_dirs
,但这没有帮助。
我还检查过以确保路径中没有空格,GCC在PATH中,并且还安装了MS编译器。
答案 0 :(得分:0)
所以我仍然不确定在调用pyximport
后它为什么没有正确导入,但我确实注意到shift.pyd
似乎正在被创建。因此,我获取了文件(在构建输出目录中)并将其复制到*PythonDir*/Lib/site-packages
。我现在可以在不使用import shift
的情况下致电pyximport
,而且似乎工作正常。