导入cx_oracle的问题
问题描述:
我有一个使用cx_Oracle(在virtualenv中)的Python项目(运行在Ubuntu 12.04上)。当我运行这个项目时,我不会导入这个模块。现在我想用主管来控制我的项目。当我开始从主管,开始崩溃项目和上升这个异常:导入cx_oracle的问题
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
worker.init_process()
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
self.wsgi = self.app.wsgi()
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/home/vagrant/scrapy/local/lib/python2.7/site-packages/gunicorn/util.py", line 352, in import_app
__import__(module)
File "/vagrant/scrapy_server/flask_server/api.py", line 8, in <module>
from resources.routes import routes
File "/vagrant/scrapy_server/flask_server/resources/routes.py", line 1, in <module>
from server.server import ServerStart, ServerStatus, ServerStop
File "/vagrant/scrapy_server/flask_server/resources/server/server.py", line 8, in <module>
from core.pool import ThreadPool
File "/home/vagrant/scrapy/src/scrapy/scrapy_server/apps/core/pool.py", line 7, in <module>
from resources.resources import Resources
File "/vagrant/scrapy_server/flask_server/resources/resources.py", line 10, in <module>
from repository.HotTypes import HotTypes
File "/vagrant/scrapy_server/flask_server/resources/repository/HotTypes.py", line 1, in <module>
from db_pg import DBPostgres
File "/vagrant/scrapy_server/flask_server/resources/repository/db_pg.py", line 1, in <module>
from resources.db_pg import DBPostgres as DBpostgresResources
File "/vagrant/scrapy_server/flask_server/resources/db_pg.py", line 1, in <module>
from core.dbcore import DBpostgresCore
File "/home/vagrant/scrapy/src/scrapy/scrapy_server/apps/core/dbcore.py", line 3, in <module>
import cx_Oracle
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
我跟着从this网站的说明,还this other网站。但我无法解决这个问题。
监督者的conf文件是:
[program:api_server]
command = /home/vagrant/scrapy/bin/gunicorn api:app
directory = /home/vagrant/scrapy/src/scrapy/scrapy_server/flask_server/
environment = PATH="/home/vagrant/scrapy/bin/python", ORACLE_HOME="/usr/lib/oracle/12.1/client64", LD_LIBRARY_PATH="/usr/lib/oracle/12.1/client64/lib"
user = vagrant
autostart=true
autorestart=true
stderr_logfile=/var/log/api.err.log
stdout_logfile=/var/log/api.out.log
redirect_stderr = True
缺少什么我在这里?如果您需要更多信息,请告诉我,我会更新此问题。
谢谢大家
答
如果您正在使用Oracle即时客户端,没有设置环境变量ORACLE_HOME。您只需要设置LD_LIBRARY_PATH以包含libclntsh.so的位置。
从环境变量中,您使用的是版本为12.1的Oracle Instant Client,但cx_Oracle本身似乎是使用11.2编译的。这将需要纠正。您需要确保cx_Oracle是使用12.1编译的,或者您需要使用新的cx_Oracle 6.0b1,它可以自动在不同的Oracle客户端版本之间自动切换。
+0
的确是关于使用12.1而不是11.2(杜,我忽略了它)。按照您的建议,我将测试Oracle而不设置ORACLE_HOME。谢谢你的帮助! – Sam
您是否设置了所有必需的env变量(如$ ORACLE_HOME,...)? –
是的,正如我写的,我设置了所需的所有环境变量,如教程中所述(链接位于上方)。如果我手动启动它,项目运行完好 – Sam