所以我找到了安装 cx_Oracle 的帮助,但仍然卡住了。我从 oracle 下载了最新的即时客户端,并将 ORACLE_HOME 设置为提取文件的位置(直接和 ORACLE_HOME 值和文件之间的 bin 文件夹),但是运行 setup.py 时 easy_install 弹出错误说它可以' t 定位 Oracle 包含文件。我确实注意到文件夹中只有 11g dll,我是否需要所有 3 个驱动程序才能完成设置?如果是这样,我什至从哪里得到它们?
4 回答
老实说,从他们拥有的二进制安装程序之一安装 cx_Oracle比从源代码安装要容易得多。
*nix 的 HOWTO:
下载适合您的架构(32 位或 64 位)的最新版 basic、sqlplus 和 sdk 软件包:
oracle-instantclient<version>-basic-<version_full>.<arch>.rpm
oracle-instantclient<version>-sqlplus-<version_full>.<arch>.rpm
oracle-instantclient<version>-devel-<version_full>.<arch>.rpm
.
使用外星人安装 RPM。例如,在撰写本文时:
$ sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
添加必要的环境变量(我个人确实将它放入
/etc/environment
然后注销/重新加载环境):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
.
如何安装 cx_Oracle
假设我们已经安装了 Oracle Instant Client 10,您有不同的选择来安装cx_Oracle:
- 使用pip安装:(
$ pip install cx_oracle
仅限 Linux) - 从cx_oracle PyPI站点下载安装程序/.tar.gz 文件
旧版本(低于 5.1.2 的版本是 .msi 和 .rpm 文件)可以从这里下载。使用外星人安装 RPM。例如,在撰写本文时:
$ sudo alien -i cx_Oracle-5.0-10g-py25-1.x86.rpm
要进行测试,python -c 'import cx_Oracle; print cx_Oracle'
应返回模块及其版本。
第 1 步检查 python 是 32 位还是 64
import platform
platform.architecture()[0]#'32bit'
或 步骤 2安装 oracle 客户端(32 位或 64 位取决于步骤 1 中的 python 版本)
- 从http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html下载 oracle 客户端(32 位版本的链接) 下载并解压 zip 文件在一个文件夹中
- 在这种情况下,zip 文件被提取到“安装”
-
单击安装并将路径设置为“基本”和“软件”目录
- 软件目录应该在基本目录中(推荐)
在这种情况下,“已安装”目录是基本目录,“软件”目录是软件路径
设置 ORACLE_HOME 路径:
将 oracle 主路径设置为 'software' 目录为 'F:\softwares\oracle11g32\installed\software'
- 在 cmd 检查 'echo %ORACLE_HOME%' 以查看路径是否设置正确
第 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 的 c++ 编译器
(或者)
visual c++ 2008 express edition ( https://www.microsoft.com/en-sa/download/details.aspx?id=5582 ) [大约 1 GB 安装]
vcforpython27 将安装在 'C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft'
- 设置一个名为“VS100COMNTOOLS”的环境变量,其值为“C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0”
echo %VS100COMNTOOL% 查看cmd中是否指向正确的目录
并执行以下步骤:(来自:错误:无法找到 vcvarsall.bat)
转到 C:/Python27/lib/distutils 文件 msvc9compiler.py。在其中找到函数 find_vcvarsall 并进行以下修改。将以下行替换: productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") 与 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
- 下载 oracle 即时客户端(适用于 32 位或 64 位架构师和适当的 Oracle 版本(10g、11g、12g))。 http://www.oracle.com/technetwork/topics/winx64soft-089540.html
注意:要求用户使用 OTN(oracle 技术网络帐户)进行身份验证。
1.1。下载并解压“Instant Client Package - Basic”到 C:\Python27\Scripts\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
经过努力,我找到了以下方法。我正在使用 Windows,并且有单独的 django 环境。
- 点击此链接并转到 Windows 部分。现在在 Oracle“Instant Client Zip”下,您将看到下载 zip 文件的第一步,具体取决于您需要的版本和位。下载 zip 文件。记住 django 2 不支持 Oracle 11。
- 在 Windows 上创建以下文件夹结构 c:\oracle\instantclient_12_2
- 将您的文件解压缩到此文件夹下。
- 在控制面板 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> PATH 中设置 PATH。Instant Client 目录必须在 PATH 中位于任何其他 Oracle 目录之前。
- 打开其他命令提示符或重新启动当前命令提示符。
- 康达激活
- 输入蟒蛇
一个一个地运行下面的命令来测试连接,注意最后一个 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',)