2017-02-23 66 views
2

我一直在試圖獲得這個安裝和設置,儘管有幾個鏈接描述如何做到這一點,我只是沒有得到這個工作。我將介紹第一次設置:在Windows中安裝Python cx_Oracle模塊並連接到Oracle數據庫

  • 我的電腦:Windows 8.1中的企業(62位)
  • 遠程服務器:Oracle數據庫版本12.1.0.2
  • C:\Users\Pymat\Oracle\instantclient_12_1 這裏是oraocci12.dll所在,以及其他文件夾和文件
  • C:\Users\Pymat\AppData\Local\Continuum\Anaconda3 這裏就是python.exe的位置(即os.path.dirname(sys.executable)) 在腳本中,我有print (sys.version)這給: 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]

我已經提到的指令從hereherehereherehere

問題1:哪一個是cx_Oracle的正確下載? 我去cx_Oracle 5.2.1here 和下載:

cx_Oracle-5.2.1-12c.win-amd64-py3.5.exe (md5) 
cx_Oracle-5.2.1-12c.win32-py3.5.exe (md5) 

目前尚不清楚其中的這些是正確.exe下載(或者兩者是正確的)。無論如何,我使用12c來保持版本與Oracle數據庫版本一致,儘管通過這整個過程,在任何情況下都不會與遠程服務器上的Oracle數據庫進行交互。

問題2:是否cx_Oracle正確下載或實際上丟失?

在以下路徑:

C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Lib\site-packages 

我發現:

cx_Oracle.cp35-win_amd64.pyd 
cx_Oracle.cp35-win32.pyd 

不過,我不在此目錄(或任何其他)的cx_Oracle下找到,例如像Verion-5.1.2-11g.win32-py2.7,按here。我懷疑找到cx_Oracle模塊存在問題。另見問題5

問題3:我的環境變量配置是否正確?

(我)當我使用Windows的圖形用戶界面來檢查變量,例如here我看到:

ORACLE_HOME 
C:\Users\Pymat\Oracle\instantclient_12_1; 
C:\Users\Pymat\Oracle\instantclient_12_1\vc12 

PATH 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Scripts; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Library\bin; 
C:\Users\Pymat\Oracle\instantclient_12_1; 

注:分號缺少在ORACLE_HOME結束。那是對的嗎?

(ii)當我在命令中使用C:\Users\Pymat>echo %PATH%

C:\ProgramData\Oracle\Java\javapath; 
C:\WINDOWS\system32; 
C:\WINDOWS; 
C:\WINDOWS\System32\Wbem; 
C:\WINDOWS\System32\WindowsPowerShell\v1.0\; 
C:\Users\Pymat\.dnx\bin; 
C:\Program Files\Microsoft DNX\Dnvm\; 
C:\Program Files\Microsoft SQL Server\130\Tools\Binn\; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Scripts; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Library\bin; 
C:\Users\Pymat\Oracle\instantclient_12_1; 

(三)當我進入Python的外殼和使用sys.path

'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\python36.zip', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\DLLs', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\Sphinx-1.5.1-py3.6.egg', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\win32', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\win32\\lib', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\Pythonwin', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg' 

問題4:即時客戶端下載,哪些下載實際上很重要?

在Oracle上註冊後,我從here下載在版本12.1.0.2的「即時客戶端軟件包 - 基本」「即時客戶端程序包 - SDK」。有些網站沒有提到SDK包,但我仍然下載了它。

這些被下載到我的電腦(不在Oracle DB駐留的地方)。

問題5:爲了測試安裝成功,我進入了Python的外殼和使用:

import os 
os.chdir("C:\\Users\\Pymat\\Oracle\\instantclient_12_1") 
import cx_Oracle 

但後來我得到:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ModuleNotFoundError: No module named 'cx_Oracle' 

爲什麼這一步不工作?

問題6:我無法在Eclipse中正確使用控制檯,但是Command中的Python shell工作正常,爲什麼?

當我點擊出 「PyDev控制檯」,然後「巨蟒控制檯」,然後我得到:

'Create Interactive Console' has encountered a problem 
Error initializing console 

這已成爲一個有點頭疼,雖然我」米仍然是一個Python新手,我認爲這個安裝過程可能會更容易。歡迎任何建議。

+0

嗨!有趣的話題!問題列表在這裏沒有多大意義!請分開您的問題,以便回答這些問題!另見[問]!謝謝! – jkalden

+0

嗨,我已經分開了問題。其中有六個,涉及安裝問題的一個主題,因此彼此相關。謝謝。 – pymat

+0

我不同意。我在一個問題中看到了6個具體的問題。這是在這裏主題的簡要! – jkalden

回答

1

長話短說:現在降級到Python 3.5,Python 3.6的二進制文件將與下一個cx_Oracle版本一起構建。


龍版本:

在腳本中,我有print (sys.version)這給:3.6.0 [...]

我發現:

cx_Oracle-5.2.1-12c.win-amd64-py3.5.exe (md5) 
cx_Oracle-5.2.1-12c.win32-py3.5.exe (md5) 

這些安裝的Python 3.5(請參閱py3.5的名稱)。二進制Python模塊在主要Python版本之間不一定是API兼容的,這就是它們的文件名是特定於版本的原因。

對於Python 3.6還沒有官方的cx_Oracle二進制文件。一旦cx_Oracle 5.3 is released, it will include Windows installers for Python 3.6 as well (issue #45)

There won't be official Python 3.6 installers for current cx_Oracle version 5.2.1 (see issue #50)

同時,according to Jani Tiainen from the mailing lists, it shouldn't be difficult to build the binaries yourself - 但我從來沒有嘗試過這個自己:

我想你只需要從微軟 C++ 14(2015)[1],並即時客戶端庫從Oracle [下載Visual 2]。那麼你應該可以自己編譯它 。

請注意,您還需要SDK庫以及Instant Client。

[1] http://landinghub.visualstudio.com/visual-cpp-build-tools

[2] http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

+2

也不要使用Anaconda,請使用https://www.python.org/中的官方Python(cx_Oracle二進制文件是針對官方Python構建的,可能根本不適用於Anacoda) – jtiai

0

謝謝你,我現在beleive對我的方式。我安裝了Visuakl C++,降級Python版本有所幫助,但還有一些問題。

  1. 使用pip install cx_Oracle最初給:

    要求已經滿足:cx_Oracle在C:\用戶\ Pymat \應用程序數據\本地\程序\ python的\ python35 \ LIB \站點包

然而

在我的腳本中使用下列內容後,問題消失:

os.chdir("C:\\Oracle\\instantclient_12_1") 
import cx_Oracle 

鄰最小的問題是進口被紅色強調,儘管它現在工作。

  • 我在腳本中使用:

    打印( 「Python版本:」 + platform.python_version()) 打印( 「cx_Oracle版本:」 + cx_Oracle.version ) print(「Oracle client:」+ str(cx_Oracle.clientversion())。replace(',','。')) print(「Oracle DB版本:」+ connection.version) print編碼:「+ connection.encoding)

  • 產生於:

    Python version: 3.5.3 
    cx_Oracle version: 5.2.1 
    Oracle client: (12.1.0.2.0) 
    Oracle DB version: 12.1.0.2.0 
    Oracle client encoding: US-ASCII 
    

    此外,我最後卸載了anaconda。我可能需要Anaconda的一些庫,所以不確定是否在未來重新安裝和使用Python可能會有所幫助。目前,它沒有它的工作。