導入相關模塊,報錯如下
File "/usr/local/python3/lib/python3.7/ssl.py", line 97, in <module> import _ssl # if we can't import it, let the error propagate ModuleNotFoundError: No module named '_ssl'
|
問題的原因是雖然mac系統已經裝了openssl包及相關的頭文件,但是默認python3.7的源碼包中指定的ssl頭文件目錄不包含mac上openssl的路徑
備註:mac os 沒有openssl-devel這個安裝包,內容都已經在openssl中了
[@localhost:openssl]$ brew link openssl --force Warning: Refusing to link macOS-provided software: openssl If you need to have openssl first in your PATH run: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile For compilers to find openssl you may need to set: export LDFLAGS="-L/usr/local/opt/openssl/lib" export CPPFLAGS="-I/usr/local/opt/openssl/include"
|
centos7上安裝openssl-devel後的路徑是/usr/include/openssl,比如/usr/include/openssl/ssl.h,如下命令可查看,其實所謂的 devel 包, 無非就是些頭文件. 所以理論上可以手動下載相關項目的源碼, 然後編譯的時候指定相關路徑就好了.
rpm -ql openssl-devel- 1.0 .2k- 16 .el7_6. 1 .x86_64 |
網上的很多文章也是設置這個路徑,比如
https://www.jianshu.com/p/3ec24f563b81、
https://techglimpse.com/install-python-openssl-support-tutorial/
http://www.shellsec.com/news/45412.html
但是其實問題的根本是我們要知道mac上openssl相關的頭文件安裝到了哪裏,如下命令查看
[@localhost:Python-3.7.2]$ brew --prefix openssl /usr/local/opt/openssl [@localhost:Python-3.7.2]$
|
最終的解決方法是:
[@localhost:include]$ pwd /usr/local/include [@localhost:include]$ ln -s /usr/local/opt/openssl/include/openssl openssl
|
也不用修改源代碼中的文件路徑了~~~
很坑爹,花了一下午的時間搗鼓~~~
參考:https://blog.csdn.net/u011756766/article/details/56489420