我正在尝试在运行Python 2.7 64位时加载sqlite 64位。我可以以交互方式进行此操作,但不是来自脚本。
交互式:
$ /c/Python27-64/python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>>
从这个脚本中,只有一行,与python shell相同:
import sqlite3
从命令行运行:
$ /c/Python27-64/python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
import sqlite3
File "c:\Python27-64\lib\sqlite3\__init__.py", line 24, in <module>
from dbapi2 import *
File "c:\Python27-64\lib\sqlite3\dbapi2.py", line 28, in <module>
from _sqlite3 import *
ImportError: DLL load failed: %1 is not a valid Win32 application.
脚本显然找到了32位dll。但为什么?交互式和单行脚本有什么区别?如何修改DLL搜索?
答案 0 :(得分:0)
如果遇到任何人,问题是我运行脚本的目录中的文件_sqlite3.pyd。有人能解释为什么Python会创建自己的Windows dll版本吗?这是简单包装,以便Python可以调用它吗?也许是一个ctypes包装?