我正在尝试在 apache 服务器上运行 django 项目。 django 服务器本身运行良好,但在通过 mod_wsgi 运行时失败。它返回错误如下:
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 主变量并尝试从 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 上。
关于python - 操作系统错误 : Cannot load native module 'Crypto.Cipher._raw_ecb' on Apache mod_wsgi CentOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64571743/