2017-06-17 66 views
0

我正在使用SSHTunnelForwarder连接远程数据库,我在Anaconda环境中运行以下代码,命令lind python客户端并且工作正常。SSHTunnelForwarder在python命令行中工作正常,但在Apache WSGI应用程序中引发导入错误

with SSHTunnelForwarder(
     ('ip', 22), 
     ssh_password="pass", 
     ssh_username="name", 
     remote_bind_address=('localhost', 3306)) as server: 
    #connect DB 

的问题是,当我部署相同的代码在与mod_wsgi的Apache2的一个WSGI应用程序,我得到了错误:

ImportError: /home/user/anaconda2/lib/python2.7/site-packages/cryptography/hazmat/bindings/_openssl.so: undefined symbol: X509_get_signature_nid 

我认为这是因为Apache已出口LD_LIBRARY_PATH,这不是/home/user/anaconda2/lib/。然后我修改了文件/opt/lampp/bin/envvars最后加了一行export LD_LIBRARY_PATH=/home/user/anaconda2/lib。然后我重新启动了Apache,但仍然出现了相同的错误。

是否还有其他我忽略的env变量?

回答

3

你不能在加载了mod_ssl的Apache内部使用Anaconda Python。这是因为Anaconda Python有自己独立的SSL库,但Apache会加载系统的。一旦发生这种情况,使用SSL的Anaconda代码将会中断。

+0

我看,没有办法走动? – franky

+2

如果不使用它,请不要加载mod_ssl。或者使用mod_wsgi-express替代运行单独的实例并设置面向Apache的Apache(使用mod_ssl)来代理它。或者不要使用Anaconda Python,而应该使用系统Python,它应该使用与Apache使用的相同的SSL库。 –

相关问题