OSError: Cannot load native module 'Crypto.Cipher._raw_ecb' on Apache mod_wsgi CentOS 8
OSError: Cannot load native module 'Crypto.Cipher._raw_ecb' on Apache mod_wsgi CentOS 8
我正在尝试 运行 apache 服务器上的 django 项目。 Django 服务器 运行 本身没问题,但在 运行 通过 mod_wsgi 时失败。 returns 错误如下:
OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Trying '_raw_ecb.cpython-39-x86_64-linux-gnu.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object,
Trying '_raw_ecb.abi3.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.abi3.so: cannot open shared object file: No such file or directory,
Trying '_raw_ecb.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.so: cannot open shared object file: No such file or directory
我检查过文件在那里。我检查了 Python home 变量并尝试从 python 解释器(有效)导入 Crypto.Cipher。一切似乎都很好。
我尝试从源代码编译 pycryptodome,但它也没有帮助。
我在使用 Flask 时遇到了同样的问题(我在 Gentoo-Linux)。
原因是虚拟环境中 Python 的不同版本和针对 mod_wsgi 的编译。
当您重新启动 apache 并查看 error_log 时,您可以看到 mod_wsgi 的版本,类似于
AH00163: Apache/2.4.46 (Unix) OpenSSL/1.1.1i PHP/7.2.34 mod_wsgi/4.7.1 Python/3.7 configured -- resuming normal operations
显示编译时针对的版本 Python mod_wsgi。
我的虚拟环境使用 Python 3.7 而 mod_wsgi 使用 3.8 .
我正在尝试 运行 apache 服务器上的 django 项目。 Django 服务器 运行 本身没问题,但在 运行 通过 mod_wsgi 时失败。 returns 错误如下:
OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Trying '_raw_ecb.cpython-39-x86_64-linux-gnu.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object,
Trying '_raw_ecb.abi3.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.abi3.so: cannot open shared object file: No such file or directory,
Trying '_raw_ecb.so': /home/user/django/centos_env/lib/python3.9/site-packages/Cryptodome/Util/../Cipher/_raw_ecb.so: cannot open shared object file: No such file or directory
我检查过文件在那里。我检查了 Python home 变量并尝试从 python 解释器(有效)导入 Crypto.Cipher。一切似乎都很好。
我尝试从源代码编译 pycryptodome,但它也没有帮助。
我在使用 Flask 时遇到了同样的问题(我在 Gentoo-Linux)。 原因是虚拟环境中 Python 的不同版本和针对 mod_wsgi 的编译。 当您重新启动 apache 并查看 error_log 时,您可以看到 mod_wsgi 的版本,类似于
AH00163: Apache/2.4.46 (Unix) OpenSSL/1.1.1i PHP/7.2.34 mod_wsgi/4.7.1 Python/3.7 configured -- resuming normal operations
显示编译时针对的版本 Python mod_wsgi。 我的虚拟环境使用 Python 3.7 而 mod_wsgi 使用 3.8 .