在Debian 5上,我一直在尝试为python安装cx_oracle模块而没有任何成功。首先,我安装了oracle-xe-client及其依赖项(遵循以下链接here中的教程)。
然后,我使用 /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin 中的脚本来填充环境变量,例如PATH,ORACLE_HOME和NLS_LANG
一旦完成,我试图运行:
sudo easy_install cx_oracle
但我一直收到以下错误:
Searching for cx-oracle
Reading http://pypi.python.org/simple/cx_oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.0.4
Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4.tar.gz?download
Processing cx_Oracle-5.0.4.tar.gz
Running cx_Oracle-5.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/egg-dist-tmp-8KoqIx
error: cannot locate an Oracle software installation
知道我错过了什么吗?
答案 0 :(得分:66)
替代方式,不需要RPM。您需要root
。
<强>依赖关系强>
安装以下软件包:
apt-get install python-dev build-essential libaio1
下载适用于Linux x86-64的Instant Client
从Oracle download site下载以下文件:
解压缩zip文件
将下载的zip文件解压缩到某个目录,我正在使用:
/opt/ora/
添加环境变量
在/etc/profile.d/oracle.sh
中创建包含
export ORACLE_HOME=/opt/ora/instantclient_11_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
在/etc/ld.so.conf.d/oracle.conf
中创建包含
/opt/ora/instantclient_11_2
执行以下命令
sudo ldconfig
注意:您可能需要重新启动才能应用设置
创建符号链接
cd $ORACLE_HOME
ln -s libclntsh.so.11.1 libclntsh.so
安装cx_Oracle
python包
您可以使用pip
pip install cx_Oracle
或手动安装
下载与您的Python和Oracle版本对应的cx_Oracle source zip。然后展开存档,并从解压缩的目录运行:
python setup.py build
python setup.py install
答案 1 :(得分:11)
我建议您抓取rpm文件并使用alien安装它们。这样,您可以稍后运行apt-get purge no-longer-needed
。
In my case,我需要的唯一env变量是LD_LIBRARY_PATH
,所以我做了:
echo export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib >> ~/.bashrc
source ~/.bashrc
我认为在你的情况下,路径变量将是/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib
。
答案 2 :(得分:4)
Thx Burhan Khalid,我忽略了你的“你需要成为根”这句话,但是当你不是根here时找到了方法。
在第7点,你需要使用:
sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install
或
sudo env ORACLE_HOME=/path/to/instantclient python setup.py install
答案 3 :(得分:4)
以下适用于我,包括mac和Linux。这个命令应该下载所需的附加文件,而不需要设置环境变量。
python -m pip install cx_Oracle --pre
注意, - pre 选项用于Oracle驱动程序的开发和预发布。截至发布时,它抓住了cx_Oracle-6.0rc1.tar.gz
,这是必需的。 (我正在使用python 3.6)
答案 4 :(得分:2)
我认为可能是sudo无法获得ORACLE_HOME。你可以这样做。
sudo visudo
修改文字添加
默认值env_keep + =“ORACLE_HOME”
然后
sudo python setup.py build install
答案 5 :(得分:2)
谢谢Burhan Khalid。您建立软链接的建议使我的安装终于有效。
回顾一下:
您需要基本版本和即时客户端的SDK版本
您需要同时设置LD_LIBRARY_PATH和ORACLE_HOME
这些都没有记录在任何地方,这是令人难以置信的,非常令人沮丧。昨天我花了超过3个小时没有构建,因为我不知道创建一个软链接。
答案 6 :(得分:1)
或者,您可以使用以下步骤
在没有PIP的情况下安装cx_Oracle模块使用以下命令(Linux)
提取targunzip cx_Oracle-6.1.tar.gz
tar -xf cx_Oracle-6.1.tar
cd cx_Oracle-6.1
构建模块
python setup.py build
安装模块
python setup.py install
答案 7 :(得分:0)
这对我来说非常适用于 Ubuntu 16 :
从Oracle网站下载('instantclient-basic-linux.x64-12.2.0.1.0.zip'和'instantclient-sdk-linux.x64-12.2.0.1.0.zip'),然后执行以下脚本(可以一块一块地做,我做了一个ROOT):
apt-get install -y python-dev build-essential libaio1
mkdir -p /opt/ora/
cd /opt/ora/
## Now put 2 ZIP files:
# ('instantclient-basic-linux.x64-12.2.0.1.0.zip' and 'instantclient-sdk-linux.x64-12.2.0.1.0.zip')
# into /opt/ora/ and unzip them -> both will be unzipped into 1 directory: /opt/ora/instantclient_12_2
rm -rf /etc/profile.d/oracle.sh
echo "export ORACLE_HOME=/opt/ora/instantclient_12_2" >> /etc/profile.d/oracle.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME" >> /etc/profile.d/oracle.sh
chmod 777 /etc/profile.d/oracle.sh
source /etc/profile.d/oracle.sh
env | grep -i ora # This will check current ENVIRONMENT settings for Oracle
rm -rf /etc/ld.so.conf.d/oracle.conf
echo "/opt/ora/instantclient_12_2" >> /etc/ld.so.conf.d/oracle.conf
ldconfig
cd $ORACLE_HOME
ls -lrth libclntsh* # This will show which version of 'libclntsh' you have... --> needed for following line:
ln -s libclntsh.so.12.1 libclntsh.so
pip install cx_Oracle # Maybe not needed but I did it anyway (only pip install cx_Oracle without above steps did not work for me...)
你的python脚本现在可以使用'cx_Oracle'了......享受!
答案 8 :(得分:0)
如果要在MAC中安装,只需解压缩下载的Oracle客户端并将其放在编写python脚本的文件夹中。 它将开始工作。
设置环境变量存在太多问题。 它对我有用。
希望这会有所帮助。
谢谢
答案 9 :(得分:0)
这对我有用
python -m pip install cx_Oracle --upgrade
有关详细信息,请参考oracle快速入门指南
https://cx-oracle.readthedocs.io/en/latest/installation.html#quick-start-cx-oracle-installation
答案 10 :(得分:0)
尝试使用以下代码重新安装它:
!pip install --proxy http://username:windowspwd@10.200.72.2:8080 --upgrade --force-reinstall cx_Oracle