我最近在我的机器上安装了cx_Oracle模块,以便连接到远程Oracle数据库服务器。 (我身边没有Oracle客户端)。
然后每当我运行我的脚本时,它都会失败并打印以下消息:
ImportError:DLL加载失败:找不到指定的模块。
我在Here找到了相关的帖子,所以我想知道我是否必须在我这边调用python脚本的Oracle客户端。
任何人都可以帮助我吗?提前谢谢。
答案 0 :(得分:10)
# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows)
# (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX)
# where XX is the oracle DB version, e.g. oraocci11.dll for Oracle 11g.
# - This dll is part of the Oracle Instant client pkg available here:
# http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
# - Also ensure that python, cx_Oracle and Oracle Client are of same arch (32 or 64-bit)
#
import cx_Oracle
你可以找到arch(32或64位):
dumpbin /headers oraocciXX.dll
file oraocciXX.so
最后,如果你仍然不明白这里真的是假人的指示:
C:\ProgFiles\OraClient\11_2
set PATH=%PATH%;C:\ProgFiles\OraClient\11_2
export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
path-to-python/python.exe -c "import cx_Oracle"
以测试您的设置是否有效。
ImportError: DLL load failed: The specified module could not be found
:然后找不到oraocciXX。正确设置env vars。ImportError: DLL load failed: %1 is not a valid Win32 application
:您的32/64位不匹配。答案 1 :(得分:8)
是的,您必须安装Oracle客户端。
“请注意,需要按顺序安装Oracle客户端(或服务器) 使用cx_Oracle。如果您不需要完整客户端附带的工具 安装时,建议安装远程的Instant Client 更容易安装。“
编辑指向Instant Client的链接:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
答案 2 :(得分:2)
在试图解决这个问题好几天后,我发现set PATH=%PATH%:<insert Oracle home here>
没有为我做这个伎俩。我必须进入我的Windows XP系统属性并将Oracle主目录附加到'系统变量'下的'path'变量。
答案 3 :(得分:0)
我还不能评论:-(但对于上面的uniquephase,您可能想尝试检查.exe和.dll的权限以确保它们是可执行的?
所以我需要采取的步骤才能让它发挥作用。
从此处解压缩即时客户端。 http://www.oracle.com/technetwork/topics/winx64soft-089540.html
chmod + x * .exe * .dll(我正在使用cygwin)。
为了完整性,我无法使用cygwin通过pip安装cx_oracle。
所以我必须使用标准的dist python(非cygwin)并通过Windows安装程序安装cx_oracle。
另外,我必须将f:/ opt / instantclient_12_1(我安装Oracle即时客户端的位置)添加到Windows路径(通过System-&gt; Advanced System Properties-&gt; Environment Variables-&gt; System Variables)。