【问题标题】:SSHTunnelForwarder works fine in command line python but raised import error in Apache WSGI applicationSSHTunnelForwarder 在命令行 python 中工作正常,但在 Apache WSGI 应用程序中引发导入错误
【发布时间】:2017-06-17 11:49:05
【问题描述】:

我正在使用 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,但仍然出现同样的错误。

还有其他我忽略的环境变量吗?

【问题讨论】:

    标签: python apache openssl anaconda mod-wsgi


    【解决方案1】:

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

    【讨论】:

    • 我明白了,没办法到处走走?
    • 如果您不使用 mod_ssl,请不要加载它。或者使用 mod_wsgi-express 来运行单独的实例并设置前端 Apache(使用 mod_ssl)来代理它。或者不要使用 Anaconda Python,而是使用系统 Python,它应该使用与 Apache 使用的相同的 SSL 库。
    猜你喜欢
    • 2017-03-12
    • 2020-07-05
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多