目录前言正文 1 cannot import name ‘SourceDistribution’2 DPI-1047: Cannot locate a 64-bit Oracle Client library3 make sure you have the 32 bits oracle client installed4 ORA-12154: TNS 前言本来以为写篇这个就够了 Python 离线安装第三方库,后来发现还有好多坑,还是全记一下吧。
前言
本来以为写篇这个就够了 Python 离线安装第三方库,后来发现还有好多坑,还是全记一下吧。使用 python 连接 oracle 有很多种方式,本文使用的是 cx-Oracle。此外,本文完全是在不能连外网的情况下操作的,能连外网没有这么麻烦。
正文
1 cannot import name ‘SourceDistribution’
本来在 linux 上配置好了所有环境,把 python 包全拷到 windows 下后发现不能直接用,还得重新安装 cx-Oracle,如 Python 离线安装第三方库写的那样,我先用能连外网的笔记本在 pypi.org/project/cx-… 下载了 whl 包,然后传到了不能连外网的机器上,而安装时报了如下错误: pip install ImportError: cannot import name ‘SourceDistribution’
pip install d:\xx\xx.whl
查了下说是 pip 版本的问题,需要升级。 那么第一个问题来了,再使用这种方式通过有问题的 pip 离线安装升级 pip 肯定是不行的,怎么办呢? 然后我使用了 Python 离线安装第三方库中写的第三种方式,源码安装升级 pip,然后再安装 cx-Oracle。
2 DPI-1047: Cannot locate a 64-bit Oracle Client library
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "D:\xx\oci.dll is not the correct architecture 查了下说是 Oracle Client 版本不对,要和 python 一致,python 是 64 位,Oracle Client 也需要是 64 位,小问题,去官网下载:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 然而坑又来了,下载需要注册 oracle 账户,注册完后登录,oracle 官网又出问题了,下载不了。
找了半天终于在 csdn 上找到一个 64 位的,下载然后传到不能联网的机器上。然而,又出问题了,见下。
3 make sure you have the 32 bits oracle client installed
用 64 位替换了 32 位的 oracle 客户端后,cx-Oracle 没问题了,而 PLSQL Developer 并不支持 Oracle 64 位客户端连接,冲突了,这不是为难我胖虎吗? 还好机智的我想起来可以在 plsql 里设置 oci 库,我把它改成了 32 位的,环境变量里配置 64 位的,这样就完美共存了。
4 ORA-12154: TNS
cx_Oracle.DatabaseError: ORA-12154: TNS
这个问题也有点坑,在 linux 下 ora_addr 需写成 "ip:port/orcl",而 windows 下需写成实例名,就是 tnsnames.ora 里配置的。
例子:
import cx_Oracle
ora_name = ""
ora_pasw = ""
ora_addr = "xx-log"
def ora_query(sql_log):
print(sql_log)
conn = cx_Oracle.connect(
'{ora_name}/{ora_pasw}@{ora_addr}'.format(ora_name=ora_name, ora_pasw=ora_pasw, ora_addr=ora_addr))
curs = conn.cursor()
res = curs.execute(sql_log)
row = res.fetchone()
curs.close()
conn.close()
return row
if __name__ == '__main__':
res1 = ora_query("select * from ETL_JOB_STATUS t where t.etl_job='audit_fraud_outbound_d_s'")
print res1
本人有多年大数据与机器学习开发经验,并乐于总结与分享,如有侵权或写的不对的地方可以私信我,有问题也可以问我哟,free~
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!