我正在嘗試在 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
提交
取消