Python 3.x ImportError:在使用Python3.8的Windows上导入IfxPy时DLL加载失败
Python3.8改变了Windows上的行为:它不在路径中查找dll,需要使用Python 3.x ImportError:在使用Python3.8的Windows上导入IfxPy时DLL加载失败,python-3.x,windows,informix,Python 3.x,Windows,Informix,Python3.8改变了Windows上的行为:它不在路径中查找dll,需要使用os添加必要的路径。添加dll\u目录,这样模块就可以无错误地导入。我需要使用OpenInformix/IfxPy模块,而且已经有了 和此同时,我试图自己修复它,所以我在代码的开头添加了以下代码 但是在python setup.py安装之后(我清理了以前的构建并重新构建了它),安装的IfxPy.py只包含\uuuuuu引导功能。 安装日志表明安装过程中生成了IfxPy.py: ... byte-compiling b
os添加必要的路径。添加dll\u目录
,这样模块就可以无错误地导入。我需要使用OpenInformix/IfxPy模块,而且已经有了
和此同时,我试图自己修复它,所以我在代码的开头添加了以下代码
但是在python setup.py安装之后(我清理了以前的构建并重新构建了它),安装的IfxPy.py
只包含\uuuuuu引导功能。
安装日志表明安装过程中生成了IfxPy.py
:
...
byte-compiling build\bdist.win-amd64\egg\IfxPyDbi.py to IfxPyDbi.cpython-38.pyc
creating stub loader for IfxPy.cp38-win_amd64.pyd
byte-compiling build\bdist.win-amd64\egg\IfxPy.py to IfxPy.cpython-38.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
...
因此,我应该将此代码放在哪里,以便导入IfxPy不会失败?在导入IfxPy模块之前添加它:
import os
if 'INFORMIXDIR' in os.environ:
os.add_dll_directory(os.path.join(os.environ['INFORMIXDIR'],"bin"))
import IfxPy
ConStr="Driver={IBM INFORMIX ODBC DRIVER};SERVER=ids1210;DATABASE=stores7;"
conn=IfxPy.connect(ConStr,"informix","ximrofni")
if conn:
stmt = IfxPy.exec_immediate(conn, "SELECT 'T'::boolean from table(set{1})")
res = IfxPy.fetch_tuple(stmt)
if res[0]:
print ("0 is true")
else:
print ("0 is false")
对源代码进行更改后,您需要使用“python setup.py build”从源代码构建它(而不仅仅是安装它)。看一下说明书,是我做的。我更新了问题的更多细节。谢谢。这很有效。但我希望这可以在模块级解决(避免更正所有使用IfxPy的脚本)。
import os
if 'INFORMIXDIR' in os.environ:
os.add_dll_directory(os.path.join(os.environ['INFORMIXDIR'],"bin"))
import IfxPy
ConStr="Driver={IBM INFORMIX ODBC DRIVER};SERVER=ids1210;DATABASE=stores7;"
conn=IfxPy.connect(ConStr,"informix","ximrofni")
if conn:
stmt = IfxPy.exec_immediate(conn, "SELECT 'T'::boolean from table(set{1})")
res = IfxPy.fetch_tuple(stmt)
if res[0]:
print ("0 is true")
else:
print ("0 is false")