mac下安裝python3無法加載系統openssl問題

導入相關模塊,報錯如下

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章