PyCharm中使用虚拟环境时Python模块无法工作

7

目前我已经使用virtualenvwrapper创建了一个虚拟环境。在这个虚拟环境中,我使用pip install cx_Oracle安装了cx_Oracle扩展。

我有一个Python脚本使用了cx_Oracle的多个命令,例如connect等。

在激活的环境下运行我的脚本(python script.py),它能正常工作并且没有产生任何错误。

但是当我尝试在PyCharm 4中运行同样的脚本时,它却无法工作。我已经选择了虚拟环境作为解释器。运行脚本时,我得到以下错误:

/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

当我在已激活环境的终端中使用相同的命令运行相同的脚本时,没有出现错误。
我已经尝试过以下方法: - 使用脚本添加了oracle_home等ENV变量 - 使用pycharm的env变量选项添加了env变量
很烦人的是我不得不切换到我的Mac终端来运行和调试。有人知道这里可能出了什么问题吗?

你能发布一下项目Python解释器设置的截图吗?问题很可能出在那里。 - Laurent Jalbert Simard
可能是因为您引用了错误的解释器。 - Games Brainiac
3个回答

6

我需要设置环境变量 ORACLE_HOMEDYLD_LIBRARY_PATHLD_LIBRARY_PATH, 然后重新启动PyCharm才能使cx_Oracle工作。

Environment Variables

Setting variables


1
这是 PyCharm 已知的问题。唯一的解决方法是使用 PyCharm 创建虚拟环境。如果使用 virtualenvwrapper 创建,PyCharm 可能无法识别它。

1
顺便说一下,我已经给PyCharm的工作人员发了邮件反映这个bug,但他们说这是Python的bug,而不是PyCharm的问题,这让我感到很好笑,因为在PyCharm之外一切都正常运行。 - laike9m

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'

以上是针对OSX 10.10版本的操作系统环境变量设置更改所导致的PyCharm无法读取的临时解决方案。 - zechun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接