【发布时间】:2018-10-29 10:00:08
【问题描述】:
我有一个已编译的 .pyd 模块,它依赖于其他几个 DLL(Python mapscript 和 MapServer),我正在尝试在 Windows 10 上的 IPython 中使用它。设置步骤如下:
- 创建了一个新的虚拟环境
- 已将 mapscript 安装到环境中
- 设置 PATH 以包含包含 MapServer DLL 的文件夹
- “import mapscript”在使用标准 venv Python 运行时可以正常工作
- 启动 ipython 并运行“import mapscript”时出现以下错误:
ImportError: DLL load failed: The specified procedure could not be found.
到目前为止的调试步骤:
- sys.executable 在两种情况下都是相同的(venv Python 和 venv IPython)
- os.environ["PATH"] 相同
- ipython 中的 sys.path 最后在 IPython 中有几个额外的路径 -
C:\Users\user\.ipython和 'c:\virtualenvs\mapscript-jupyter3\lib\site-packages\IPython\extensions' 但在其他方面是相同的。删除这些路径不会改变错误。 - 我尝试使用进程监视器查找丢失的 DLL,但似乎都找到了。
在带有新创建的 venv 的 Python 2.7 和 Python 3.6 中都会出现同样的问题。 这个问题似乎与ipython notebook can import a pyd module but the python interpter can't相反
所以我的问题是,IPython 对 Python 环境做了什么会导致与标准 Python 的差异并导致 ImportError?
【问题讨论】:
标签: python ipython importerror