簡體   English   中英

cx_Oracle - DLL加載失敗

[英]cx_Oracle - DLL load failed

我在使用Python導入cx_Oracle時遇到問題。 我知道這里討論了很多關於cx_Oracle的問題,但是在閱讀完所有相關主題之后,我似乎無法找到問題的解決方案。

我有兩台機器,一台是我的電腦,另一台是遠程工作站,它有類似的配置(Windows 7,64位)。 我需要在遠程工作站上安裝cx_Oracle但它不起作用,而它在我的計算機上工作正常(我可以成功導入模塊並連接到我的數據庫)。 在遠程工作站上,我有以下錯誤:

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
  import cx_Oracle
ImportError: DLL load failed: The specified module could not be found.

我已經仔細檢查了我的環境變量,並且我重新安裝了cx_Oracle幾次,但是我無法讓它工作......我對這個問題進行了一些研究,我有點卡在這里,我不明白為什么它在我的計算機上工作正常,但在這個遠程工作站上沒有(唯一的區別是這個遠程工作站是一個VM)。

有沒有人知道可能是什么問題?

在cx_oracle.pyd上運行Dependancy Walker(在我的計算機上工作正常並且在cx_oracle不起作用的遠程工作站上),唯一的區別是我的遠程工作站上找不到的dll MSVCR100和MSVCR90。

我有以下環境變量設置:

  • C:\\Oracle as ORACLE_BASE

  • C:\\Oracle\\instantclient_12_1為ORACLE_HOME

  • C:\\Oracle\\instantclient_12_1添加到“Path”變量中

兩台機器都是64位Windows 7

我正在運行Python 2.7.5

我在C:\\Oracle\\instantclient_12_1解壓縮了instantclient-basic-nt-12.1.0.1.0

我安裝了cx_Oracle-5.1.2-11g.win32-py2.7s

在遠程工作站上, sys.path給了我:

'C:\\ Python27 \\ Lib \\ idlelib','C:\\ Windows \\ system32 \\ python27.zip','C:\\ Python27 \\ DLLs','C:\\ Python27 \\ lib','C:\\ Python27 \\ lib \\ plat-win','C:\\ Python27 \\ lib \\ lib-tk','C:\\ Python27','C:\\ Python27 \\ lib \\ site-packages'


編輯1

在上一篇文章中,所有文件(Python 2.7,cx_Oracle包,Oracle Instant Client)都是針對32位系統的。 我為64位系統下載了相同版本的文件,現在我的遠程工作站上的一切正常。

編輯2

基本上,修復包括重新安裝64位系統而不是32位系統的所有內容(Python,Oracle Instant Client和cx_Oracle)。

總結一下,這是我的問題以及它是如何解決的:1)我安裝了Cx_Oracle(來自32位Windows安裝包)和Oracle Instant Client(32位),它在我運行python 2.7的64位系統上運行得很好.5對於32位系統2)我在虛擬機上做了同樣的事情(運行64位系統)並且它沒有工作3)為了讓它在VM上工作,我重新安裝了所有的東西64位系統(python,Instant Client,Cx_Oracle),它終於奏效了

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html http://sourceforge.net/projects/cx-oracle/files/5.1.2/

此外,請確保下載與您的數據庫版本對應的cx_Oracle和Instant客戶端(在我的情況下為11g)。 希望這可以幫助。

我在win 7和python35(64位)上運行Oracle Express。

這就是我設法讓我的django-1.9連接到oracle的方法。

  1. 使用pip pip3 install cx_Oraclepip3 install cx_Oracle )而不是從pypi網站下載msi。

  2. 從( http://www.oracle.com/technetwork/topics/winx64soft-089540.html )下載Oracle即時客戶端64位版本並解壓縮到c:\\ oraclexe(只是為了將所有oracle內容保存在一個地方)

  3. 在環境變量下面創建:

    set ORACLE_BASE=C:\\oraclexe set ORACLE_HOME=C:\\oraniclexe\\app\\oracle\\product\\11.2.0\\server set PATH=C:\\oraclexe\\instantclient_11_2;%PATH%

  4. 更新了我的django settings.py

DATABASES = { 'default':{ 'ENGINE':'django.db.backends.oracle' 'NAME':'XE', 'USER':'hr', 'PASSWORD':'hr', 'HOST':'localhost', 'PORT':'1521', }, }就是這樣。 之后,我的django遷移工作正常

在我的情況下,我只是在路徑變量中移動Python之前的ORACLE_HOME,它適用於我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM