所以我找到了Help installing cx_Oracle,但仍然卡住了。我从oracle下载了最新的instantclient,并将ORACLE_HOME设置为解压缩文件的位置(直接和ORACLE_HOME值与文件之间的bin文件夹),但easy_install在运行setup.py时弹出错误说它可以'找到Oracle包含文件。我注意到文件夹中只有11g dll,我是否需要所有3个驱动程序才能完成设置?如果是这样,我在哪里获得它们?
答案 0 :(得分:18)
老实说,从他们拥有的binary installers之一安装cx_Oracle比从源安装cx_Oracle要容易得多。
下载适合您架构的最新版本的基本,sqlplus和sdk软件包(32或64位):
oracle-instantclient<version>-basic-<version_full>.<arch>.rpm
oracle-instantclient<version>-sqlplus-<version_full>.<arch>.rpm
oracle-instantclient<version>-devel-<version_full>.<arch>.rpm
。使用alien安装RPM。例如,在撰写本文时:
$ sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
添加必要的环境变量(我个人确实把它放在/etc/environment
然后注销/重新加载以重新加载env):
ORACLE_HOME=/usr/lib/oracle/<version>/client64/lib/
LD_LIBRARY_PATH=/usr/lib/oracle/<version>/client64/lib/
$ sudo ln -s /usr/include/oracle/<version>/client $ORACLE_HOME/include # for 32bits arch, OR
$ sudo ln -s /usr/include/oracle/<version>/client64 $ORACLE_HOME/include # for 64bits arch
创建/etc/ld.so.conf.d/oracle-instantclient<version>-basic.conf
和/etc/ld.so.conf.d/oracle.conf
(对于更新版本,至少从12.1开始),包含:
/lib
/usr/lib/oracle/<version>/client/lib ; for 32bits arch, OR
/usr/lib/oracle/<version>/client64/lib ; for 64bits arch
重新加载ldconfig缓存(如果你想要一些详细的话,请使用-v
标志):
$ sudo ldconfig
您可能需要安装libaio1
。
假设我们已经安装了Oracle Instant Client 10,您可以使用不同的替代方法来安装cx_Oracle:
$ pip install cx_oracle
(仅限Linux)旧版本(小于5.1.2的版本是.msi和.rpm文件)可以从here下载。使用外星人安装RPM。例如,在撰写本文时:
$ sudo alien -i cx_Oracle-5.0-10g-py25-1.x86.rpm
要进行测试,python -c 'import cx_Oracle; print cx_Oracle'
应该返回模块及其版本。
答案 1 :(得分:10)
第1步检查python是32位还是64位
import platform
platform.architecture()[0]#'32bit'
或 第2步安装oracle客户端(32位或64位取决于步骤1中的python版本)
点击安装并设置&#39; base&#39;和&#39;软件&#39;目录
在这种情况下安装&#39;目录是基础和&#39;软件&#39;目录用于软件路径
设置ORACLE_HOME路径:
将oracle主路径设置为&#39;软件&#39;目录为&#39; F:\ softwares \ oracle11g32 \ installed \ software&#39;
第3步为python 2.7安装vcforpython27或visual c ++ 2008 express edition
从这里下载https://www.microsoft.com/en-sa/download/details.aspx?id=44266(在这种情况下用这个来避免安装整个visual c ++ 2008,如下所述)
它是一个包含python 2.7
(OR)
visual c ++ 2008 express edition(https://www.microsoft.com/en-sa/download/details.aspx?id=5582)[它将安装1 GB左右]
vcforpython27将安装在&#39; C:\ Users \ Administrator \ AppData \ Local \ Programs \ Common \ Microsoft&#39;
echo%VS100COMNTOOL%以查看是否指向cmd中的正确目录
并执行以下步骤:(来自:error: Unable to find vcvarsall.bat)
转到C:/ Python27 / lib / distutils文件msvc9compiler.py。在其中找到函数find_vcvarsall并进行以下修改。 替换线: productdir = os.path.join(toolsdir,os.pardir,os.pardir,&#34; VC&#34;) 同 productdir = os.path.join(toolsdir) 这是vcvarsall.bat在这种情况下所在的位置(检查,vcvarsall.bat在你的安装中)。
安装cx_Oracle
the easy step: pip install cx_oracle
如果正确遵循上述所有步骤,那么它应该有效。想出这个问题花了很多痛苦。我希望它会有用。
建议运行:
pip install --upgrade setuptools
from : https://stackoverflow.com/questions/2667069/cannot-find-vcvarsall-bat-when-running-a-python-script
答案 2 :(得分:1)
注意:要求用户使用OTN(oracle tech网络帐户)进行身份验证。
1.1。下载并解压缩“Instant Client Package - Basic” C:\ Python27 \脚本\ instantclient_11_2 例如 instantclient-basic-windows.x64-11.2.0.4.0.zip
1.2。下载“Instant Client Package - SDK”并将其解压缩到C:\ Python27 \ Scripts \ instantclient_11_2 例如 instantclient-sdk-windows.x64-11.2.0.4.0.zip
设置ORACLE_HOME = C:\ Python27 \ Scripts \ instantclient_11_2
python -m pip install cx_Oracle
成功输出:
Collecting cx_Oracle
Using cached cx_Oracle-5.2.1.tar.gz
Building wheels for collected packages: cx-Oracle
Running setup.py bdist_wheel for cx-Oracle ... done
Stored in directory: C:\Users\m315468\AppData\Local\pip\Cache\wheels\7c\5f\96\ cd273c9b675bc7c28ae249b74d1f7df5d3eacba9e918715225
Successfully built cx-Oracle
Installing collected packages: cx-Oracle
Successfully installed cx-Oracle-5.2.1
答案 3 :(得分:0)
经过努力,我发现了以下方法。我正在使用Windows,并且为django提供了单独的环境。
逐条运行以下所有命令以测试连接,请注意最后一个for循环中的缩进。
import cx_Oracle
connection = cx_Oracle.connect("your_username", "your_psw", "localhost/orcl")
cursor = connection.cursor()
cursor.execute("""select to_char(sysdate, 'dd-mon-yyyy') from dual""")
for cdate in cursor:
print("Today the date is ", cdate)
输出:
Today the date is ('08-nov-2019',)