我正在尝试在 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 home变量并尝试从python解释器导入Crypto.Cipher(有效)。一切看起来都很好。我尝试从源代码编译 pycryptodome 但它也没有帮助。
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
我在 Flask 上也遇到了同样的问题(我在 Gentoo-Linux 上)。原因是虚拟环境和 mod_wsgi 编译时使用的 Python 版本不同。当你重新启动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 。
添加回答
举报
0/150
提交
取消