SSHTunnelForwarder在命令行python中工作正常但在Apache WSGI应用程序中引发了导入错误

时间:2017-06-17 11:49:05

标签: python apache openssl anaconda mod-wsgi

我正在使用SSHTunnelForwarder连接远程数据库,我在Anaconda环境中的命令lind python客户端运行以下代码,它运行正常。

    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变量吗?

1 个答案:

答案 0 :(得分:3)

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