目前我有一个使用virtualenvwrapper创建的virtualenv。在那个virtualenv我用pip install cx_Oracle安装了cx_Oracle扩展。
我有一个python脚本,使用cx_Oracle中的几个命令,比如connect等。
运行我的脚本时认为激活的env(python script.py)运行正常并且没有错误。
但是当我尝试在PyCharm 4中运行相同的脚本时,它不起作用。我选择了intrepeter的virtualenv。运行脚本时,我收到如下错误:
/Users/pgerrits/.virtualenvs/siebelaudit/bin/python3.4 -u /Applications/PyCharm.app/Contents/helpers/pydev/pydev_run_in_console.py 64420 64421 /Users/pgerrits/PycharmProjects/SiebelAudit/Audit/Siebel Audit/scratchpad.py
Running /Users/pgerrits/PycharmProjects/SiebelAudit/Audit/Siebel Audit/scratchpad.py
PyDev console: starting.
ImportError: dlopen(/Users/pgerrits/.virtualenvs/siebelaudit/lib/python3.4/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
Referenced from: /Users/pgerrits/.virtualenvs/siebelaudit/lib/python3.4/site-packages/cx_Oracle.so
Reason: image not found
在env激活的终端中使用相同的命令运行相同的脚本时,我没有错误。
我已经尝试过以下方法: - 使用脚本为oracle_home等添加了ENV变量 - 使用pycharm env变量选项
添加了env变量我必须切换到我的mac终端进行运行和调试,这真烦人。有谁知道这里可能出现什么问题?
答案 0 :(得分:6)
我必须为ORACLE_HOME
设置环境变量
DYLD_LIBRARY_PATH
和LD_LIBRARY_PATH
并重新启动PyCharm以使cx_Oracle工作。
答案 1 :(得分:1)
这是PyCharm的一个已知问题。唯一的方法是使用PyCharm创建virtualenv。如果你使用virtualenvwrpper创建,那么PyCharm很有可能无法识别它。
答案 2 :(得分:0)
import os
import platform
if platform.system() == 'Darwin':
os.environ["ORACLE_HOME"] = '/opt/oracle/instantclient_11_2'
os.environ["DYLD_LIBRARY_PATH"] = '/opt/oracle/instantclient_11_2'
os.environ["LD_LIBRARY_PATH"] = '/opt/oracle/instantclient_11_2'