python安裝cxOracle避坑總結(jié)不要直接pip install
轉(zhuǎn)自http://rookiefly.cn/detail/69
作死小能手這兩天閑著沒事,把自己電腦重裝了,然而重裝過后配置開發(fā)環(huán)境踩了一些坑,這里把安裝cx_oracle遇到的坑記錄下來,方便以后查看。
使用pip安裝出現(xiàn)的問題
命令:
pip install cx_oracle
錯誤:
Unable to find vcvarsall.bat
我用了最簡單粗暴的方法:由于我的操作系統(tǒng)是win10 64位,所以我安裝了vs2015,很遺憾報的錯誤更多了!由于以前我沒用pip安裝都可以成功安裝,所以我舍棄了這種安裝方式
到官網(wǎng)下載相應(yīng)版本的驅(qū)動進行安裝
我的操作系統(tǒng)為64位,Python版本為3.5.2,所以我到https://pypi.python.org/pypi/cx_Oracle/5.2.1 下載了對應(yīng)的版本:cx_Oracle-5.2.1-12c.win-amd64-py3.5
1.安裝過程中的錯誤:
Python version 3.5 required, which was not found in the registry
解決方法: 網(wǎng)上看了很多種解決方法,很多是說的修改注冊表,這種方式我試了,但是沒成功,最后找到這個方法,成功了。運行下面這個腳本,不管是Python3.x還是2.x都可以加入注冊表中:
# 解決windows平臺下找不到python的注冊信息問題 (安裝oracle驅(qū)動會用) 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()
為了防止直接從網(wǎng)頁復(fù)制運行失敗的情況,我把它放到了github上,可以直接下載運行:register.py
2.命令行中運行提示找不到指定的模塊
import cx_Oracle
ImportError: DLL load failed: 找不到指定的模塊。
這個問題的解決方法網(wǎng)上也說了很多,就是下載instantclient,然后解壓將其中的oci.dll拷貝到$Python_Home 或者 $Python_Home\Lib\site-packages 目錄下。
運氣好了,就成功了,運氣不好的話可能還會出現(xiàn)找不到指定的模塊這個問題,原因是instantclient的版本和cx_Oracle的版本不一致,拿我安裝的來舉例,我先下載了instantclient11,而我的 cx_Oracle安裝的是cx_Oracle-5.2.1-12c.win-amd64-py3.5,一個是11,一個是12c,這樣還是出現(xiàn)了這個找不到指定的模塊這個問題。
正確做法是下載instantclient12和cx_Oracle-5.2.1-12c.win-amd64-py3.5。
注意一點是cx_oracle和instantclient的版本不必和Oracle數(shù)據(jù)庫版本一致,只需要cx_Oracle和instantclient版本一致即可。
這樣這個問題解決了,但是還有坑等著你!
3.命令行中運行提示不是有效的win32模塊
import cx_Oracle
DLL load failed: %1 不是有效的 Win32 應(yīng)用程序
解決方法:上一步我們討論了版本問題,這一步該說說操作系統(tǒng)位數(shù)的問題了,出現(xiàn)這個問題的原因是操作系統(tǒng)、cx_Oracle和instantclient的位數(shù)不同,比如我先就是用的win10 64、cx_Oracle-5.2.1-12c.win-amd64-py3.5和instantclient12c(32位),就報了這個錯誤。
正確做法是三者都用64或者三者都用32位系統(tǒng),將instantclient的oci.dll文件放到$Python_Home\Lib\site-packages 目錄下即可。
到此,應(yīng)該可以解決cx_oracle安裝過程的所有問題了,祝大家好運!
補充:雖然這樣是可以使用cx_Oracle了,但是實際操作數(shù)據(jù)庫的時候可能會出現(xiàn)unable to acquire oracle environment handle這個錯誤,解決方法是拷貝oci.dll, oraociei12.dll, oraocci12.dll到site-package中。
另外一種方法是為instantclient12c設(shè)置環(huán)境變量,這樣就不用拷貝dll文件了
以上就是python安裝cxOracle避坑總結(jié)不要直接pip install了的詳細內(nèi)容,更多關(guān)于python安裝cxOracle避坑的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)http接口自動化測試的示例代碼
這篇文章主要介紹了Python實現(xiàn)http接口自動化測試的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10詳解利用Python scipy.signal.filtfilt() 實現(xiàn)信號濾波
這篇文章主要介紹了詳解利用Python scipy.signal.filtfilt() 實現(xiàn)信號濾波,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06Pytorch中的model.train()?和?model.eval()?原理與用法解析
pytorch可以給我們提供兩種方式來切換訓(xùn)練和評估(推斷)的模式,分別是:model.train()?和?model.eval(),這篇文章主要介紹了Pytorch中的model.train()?和?model.eval()?原理與用法,需要的朋友可以參考下2023-04-04pytorch之inception_v3的實現(xiàn)案例
今天小編就為大家分享一篇pytorch之inception_v3的實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01python3.9和pycharm的安裝教程并創(chuàng)建簡單項目的步驟
這篇文章主要介紹了python3.9和pycharm的安裝教程并創(chuàng)建簡單項目的步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法
今天小編就為大家分享一篇Python運維之獲取系統(tǒng)CPU信息的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06高考要來啦!用Python爬取歷年高考數(shù)據(jù)并分析
轉(zhuǎn)眼間,高考的日子又要來臨了,不知道高考學(xué)子們準備的怎么樣了,今天這篇文章簡單且隨意地分析一下高考的一些數(shù)據(jù),需要的朋友可以參考下2021-06-06