为什么在python.exe中加载libsodium.pyd成功,但在嵌入式Python中失败?

时间:2015-10-08 13:00:59

标签: python windows python-2.7 ctypes

在Windows 8中,我有一个QGIS安装"Standalone installer Version 2.10 (64 bit)"。我尝试从QGIS的嵌入式Python中获取一个IPython内核,并使用pip安装了一些软件包。 import IPython没有错误。当我从OSGeo4W shell中的python.exe以非管理员身份调用它时,IPython.start_kernel()没有错误。但是当我在QGIS Python控制台中执行相同操作时,我会得到一个堆栈跟踪。

加载libsodium.pyd时会发生错误,如下所示。我关心的是同一个工作目录和PATH环境变量。

还有什么能有所作为?

来自OSGeo4W shell的

python.exe会话:

Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys, os, ctypes
>>> sys.executable
'C:\\PROGRA~1\\QGISPI~1\\bin\\python.exe'
>>> os.getcwd()
'C:\\PROGRA~1\\QGISPI~1\\bin'
>>> for x in os.environ['PATH'].split(';'): print x
...
C:\PROGRA~1\QGISPI~1\apps\Python27\Scripts
C:\PROGRA~1\QGISPI~1\bin
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\WBem
C:\PROGRA~1\QGISPI~1\apps\msys\bin
>>> ctypes.cdll.LoadLibrary('C:\\PROGRA~1\\QGISPI~1\\apps\\Python27\\lib\\site-packages\\zmq\\libsodium.pyd')
<CDLL 'C:\PROGRA~1\QGISPI~1\apps\Python27\lib\site-packages\zmq\libsodium.pyd', handle 80000000 at 1e9e780>

QGIS Python控制台:

Python Console 
Use iface to access QGIS API interface or Type help(iface) for more info
import sys, os, ctypes
sys.version
'2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)]'
sys.executable
'C:\\PROGRA~1\\QGISPI~1\\bin\\qgis-bin.exe'
os.getcwd()
'C:\\PROGRA~1\\QGISPI~1\\bin'
os.environ['PATH'] = 'C:\\PROGRA~1\\QGISPI~1\\apps\\Python27\\Scripts;C:\\PROGRA~1\\QGISPI~1\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\WBem;C:\\PROGRA~1\\QGISPI~1\\apps\\msys\\bin'
for x in os.environ['PATH'].split(';'): print x
C:\PROGRA~1\QGISPI~1\apps\Python27\Scripts
C:\PROGRA~1\QGISPI~1\bin
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\WBem
C:\PROGRA~1\QGISPI~1\apps\msys\bin
ctypes.cdll.LoadLibrary('C:\\PROGRA~1\\QGISPI~1\\apps\\Python27\\lib\\site-packages\\zmq\\libsodium.pyd')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\PROGRA~1\QGISPI~1\apps\Python27\lib\ctypes\__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "C:\PROGRA~1\QGISPI~1\apps\Python27\lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] Das angegebene Modul wurde nicht gefunden

0 个答案:

没有答案