溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python安裝cxOracle需要注意什么

發布時間:2021-10-31 19:18:54 來源:億速云 閱讀:222 作者:小新 欄目:開發技術

這篇文章主要介紹了python安裝cxOracle需要注意什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

使用pip安裝出現的問題

命令:

pip install cx_oracle

錯誤:

Unable to find vcvarsall.bat

我用了最簡單粗暴的方法:由于我的操作系統是win10 64位,所以我安裝了vs2015,很遺憾報的錯誤更多了!由于以前我沒用pip安裝都可以成功安裝,所以我舍棄了這種安裝方式

到官網下載相應版本的驅動進行安裝

我的操作系統為64位,Python版本為3.5.2,所以我到https://pypi.python.org/pypi/cx_Oracle/5.2.1 下載了對應的版本:cx_Oracle-5.2.1-12c.win-amd64-py3.5

1.安裝過程中的錯誤:

Python version 3.5 required, which was not found in the registry

解決方法: 網上看了很多種解決方法,很多是說的修改注冊表,這種方式我試了,但是沒成功,最后找到這個方法,成功了。運行下面這個腳本,不管是Python3.x還是2.x都可以加入注冊表中:

# 解決windows平臺下找不到python的注冊信息問題 (安裝oracle驅動會用)
from winreg import *
import sys
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
regpath = "SOFTWARE\Python\Pythoncore\{0}\".format(version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "{0};{1}\Lib\;{2}\DLLs\".format(
    installpath, installpath, installpath)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    except EnvironmentError as e:
        try:
            reg = CreateKey(HKEY_CURRENT_USER, regpath)
            SetValue(reg, installkey, REG_SZ, installpath)
            SetValue(reg, pythonkey, REG_SZ, pythonpath)
            CloseKey(reg)
        except:
            print(" Unable to register!")
            return
        print("--- Python", version, "is now registered!")
        return
    if (QueryValue(reg, installkey) == installpath and
        QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print("=== Python", version, "is already registered!")
        return
    CloseKey(reg)
    print(" Unable to register!")
    print("*** You probably have another Python installation!")
if name == "main":
    RegisterPy()

為了防止直接從網頁復制運行失敗的情況,我把它放到了github上,可以直接下載運行:register.py

2.命令行中運行提示找不到指定的模塊

import cx_Oracle

ImportError: DLL load failed: 找不到指定的模塊。

這個問題的解決方法網上也說了很多,就是下載instantclient,然后解壓將其中的oci.dll拷貝到$Python_Home 或者 $Python_Home\Lib\site-packages 目錄下。

運氣好了,就成功了,運氣不好的話可能還會出現找不到指定的模塊這個問題,原因是instantclient的版本和cx_Oracle的版本不一致,拿我安裝的來舉例,我先下載了instantclient11,而我的 cx_Oracle安裝的是cx_Oracle-5.2.1-12c.win-amd64-py3.5,一個是11,一個是12c,這樣還是出現了這個找不到指定的模塊這個問題。

正確做法是下載instantclient12和cx_Oracle-5.2.1-12c.win-amd64-py3.5。

注意一點是cx_oracle和instantclient的版本不必和Oracle數據庫版本一致,只需要cx_Oracle和instantclient版本一致即可。

這樣這個問題解決了,但是還有坑等著你!

3.命令行中運行提示不是有效的win32模塊

import cx_Oracle

DLL load failed: %1 不是有效的 Win32 應用程序

解決方法:上一步我們討論了版本問題,這一步該說說操作系統位數的問題了,出現這個問題的原因是操作系統、cx_Oracle和instantclient的位數不同,比如我先就是用的win10 64、cx_Oracle-5.2.1-12c.win-amd64-py3.5和instantclient12c(32位),就報了這個錯誤。

正確做法是三者都用64或者三者都用32位系統,將instantclient的oci.dll文件放到$Python_Home\Lib\site-packages 目錄下即可。

到此,應該可以解決cx_oracle安裝過程的所有問題了,祝大家好運!

補充:雖然這樣是可以使用cx_Oracle了,但是實際操作數據庫的時候可能會出現unable to acquire oracle environment handle這個錯誤,解決方法是拷貝oci.dll, oraociei12.dll, oraocci12.dll到site-package中。

另外一種方法是為instantclient12c設置環境變量,這樣就不用拷貝dll文件了

感謝你能夠認真閱讀完這篇文章,希望小編分享的“python安裝cxOracle需要注意什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女