SSHTunnelForwarder 在命令行 python 中工作正常,但在 Apache WSGI 应用程序中引发导入错误
SSHTunnelForwarder works fine in command line python but raised import error in Apache WSGI application
我正在使用 SSHTunnelForwarder 连接远程数据库,我 运行 在 Anaconda
环境中的 command 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,但仍然出现相同的错误。
是否还有我忽略的其他环境变量?
您不能在加载了 mod_ssl 的 Apache 中使用 Anaconda Python。这是因为 Anaconda Python 有自己独立的 SSL 库,但 Apache 会加载系统库。一旦发生这种情况,使用 SSL 的 Anaconda 代码就会崩溃。
我正在使用 SSHTunnelForwarder 连接远程数据库,我 运行 在 Anaconda
环境中的 command 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,但仍然出现相同的错误。
是否还有我忽略的其他环境变量?
您不能在加载了 mod_ssl 的 Apache 中使用 Anaconda Python。这是因为 Anaconda Python 有自己独立的 SSL 库,但 Apache 会加载系统库。一旦发生这种情况,使用 SSL 的 Anaconda 代码就会崩溃。