python - 操作系统错误 : Cannot load native module 'Crypto.Cipher._raw_ecb' on Apache mod_wsgi CentOS 8

标签 python django apache centos

我正在尝试在 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/

相关文章:

python - 并行速度

Django RESTful API - django-piston 与 django-tastypie

Django、apache、mod_wsgi - 错误 : Premature end of script headers

apache - 如何使用 Apache 将 cookie 值附加到响应位置 header 的末尾?

php - 无法在 xampp 服务器中启动 Apache 模块

python - 使用 Scrapy 和 XPath 解析表中的信息

python - PEP 8 和列表理解

python - 如何将日期格式 QQ-YYYY 转换为日期时间对象

python - 如果另一个表中存在一行,则添加 bool 字段?

css - 为什么 django 不解析和替换我的 css 文件中的模板标签?