簡體   English   中英

如何使用pyinstaller構建cx_oracle應用程序以使用多個Oracle客戶端版本?

[英]How do I build a cx_oracle app using pyinstaller to use multiple Oracle client versions?

我正在使用cx_Oracle(v5)和Pyinstaller在Python中構建應用程序,以打包和分發該應用程序。 在構建和打包應用程序時,我安裝了Oracle 12c客戶端。 但是,當我將其部署到安裝了11g客戶端的計算機上時,似乎無法正常工作。 我收到消息“無法獲取Oracle環境句柄”。 我認為這是由於將我的ORACLE_HOME指向12c客戶端時,應用程序與Pyinstaller打包在一起的結果。 我知道我已經針對11g和12庫構建了cx_Oracle。 因此,我想知道如何使用Pyinstaller部署應用程序,使其可以在安裝11或12c客戶端庫的情況下運行?

順便說一句,我正在Linux(debian / Mint 17.2)上構建它,並部署到Linux(CentOS 7)。

錯誤“無法獲取Oracle環境句柄”表示您的Oracle配置有問題。 檢查以查看您正在使用的libclntsh.so文件。 最簡單的方法是在PyInstaller與可執行文件捆綁在一起的cx_Oracle模塊上使用ldd命令。 然后檢查是否由於將環境變量ORACLE_HOME設置為其他客戶端而導致沖突!

如果PyInstaller在打包過程中拾取了libclntsh.so文件,則需要告訴它停止這樣做。 目標計算機上必須有一個Oracle客戶端(完整客戶端或簡單得多的即時客戶端),而不僅僅是一個文件(libclntsh.so)。

您還可以通過使用目標計算機上的cx_Oracle.so模塊來建立連接(與應用程序無關)來驗證配置是否正確。 如果那行不通或者由於某種原因您在那里沒有安裝Python,您還可以使用SQL * Plus來驗證您的配置是否正確。

暫無
暫無

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

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