MAC에서 외부 python3 등을 brew등로 설치하고 나서 외부 https 싸이트를 python으로 접근할려고하면 아래 구문이 포함된 에러를 만나게 된다.


ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

 

로컬 인증서가 등록이 안되어 있어서 그럴것으로 아래 내용으로 all_certifi.py 만들고 한번 실행 해주면 된다.

# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module.  Uses the certificates provided by the certifi package:
#       https://pypi.python.org/pypi/certifi

import os
import os.path
import ssl
import stat
import subprocess
import sys

STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
             | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
             | stat.S_IROTH |                stat.S_IXOTH )


def main():
    openssl_dir, openssl_cafile = os.path.split(
        ssl.get_default_verify_paths().openssl_cafile)

    print(" -- pip install --upgrade certifi")
    subprocess.check_call([sys.executable,
        "-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])

    import certifi

    # change working directory to the default SSL directory
    os.chdir(openssl_dir)
    relpath_to_certifi_cafile = os.path.relpath(certifi.where())
    print(" -- removing any existing file or link")
    try:
        os.remove(openssl_cafile)
    except FileNotFoundError:
        pass
    print(" -- creating symlink to certifi certificate bundle")
    os.symlink(relpath_to_certifi_cafile, openssl_cafile)
    print(" -- setting permissions")
    os.chmod(openssl_cafile, STAT_0o775)
    print(" -- update complete")

if __name__ == '__main__':
    main()

Mac OSX에서 python3를 기본으로 쓰기

  • 맥 재설치하면서 python3 를 기본으로 설정하기 위해서 정리함
  • 실제 python 프로젝트가 있다면 프로젝트 레벨로 관리하는것이 좋다. pyenv 사용
  • 지금은 OS 기본 사용을 목적으로 설정 한다.

전제

  • Mac을 쓴다면 일단 패키지 관리자인 brew는 설치한다. 설치되어 있으면 skip (참고: https://brew.sh )
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

방법 1 - 권장하지 않음 (참고만)

  • brew로 python2, python3를 설치하고 shell의 rc파일에 alias를 잡는 방식.
brew update
brew install python3
echo "alias pip=/usr/local/bin/python3" >> ~/.zshrc 
echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc 
# or for Bash
echo "alias pip=/usr/local/bin/python3" >> ~/.bashrc  
echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
# If you need Python 2.7
brew install python@2

방법 2 - 권장

  • brew로 pyenv 를 설치하고 pyenv로 원하는 버전을 설치하고 switching 해서 쓴다.
  • brew 대비 다운도 느리고 build를 해서 설치하는 타입이라 처음 설정시 시간이 좀 더 걸리긴 한다.
  • (혹시나 위의 방법 1을 수행 했다면 .zshrc (또는 .bashrc)를 열어서 python과 pip alias 잡힌 두줄을 삭제 한다)
brew install pyenv
pyenv install 3.8.1
pyenv install 2.7.17 # python2도 pyenv로 관리를 하고 싶다면 실행
pyenv global 3.8.1
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# or for Bash
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

버전 전환 방법

설치된 python 목록을 pyenv versions으로 보고 pyenv global x.x.x로 전환하면 된다.

pyenv versions
pyenv global 2.7.17

 

Today’s AI Software Infrastructure Landscape (And Trends Shaping The Market)

https://mc.ai/todays-ai-software-infrastructure-landscape-and-trends-shaping-the-market/

 

Today’s AI Software Infrastructure Landscape (And Trends Shaping The Market)

At Work-Bench, we host quarterly peer roundtables connecting corporate executives solving some of the largest technology pain-points facing their organization. At our Machine Intelligence Roundtabl…

mc.ai

 

Introducing Redpoint’s ML Workflow Landscape

https://medium.com/memory-leak/introducing-redpoints-ml-workflow-landscape-312ca3c91b2f

 

Introducing Redpoint’s ML Workflow Landscape

ML is not only a hot buzz word but is becoming an expected component of modern businesses. Companies that want to stay competitive invest…

medium.com

 

A Turbulent Year: The 2019 Data & AI Landscape

https://mattturck.com/data2019/

 

A Turbulent Year: The 2019 Data & AI Landscape

It has been another intense year in the world of data, full of excitement but also complexity. As more of the world gets online, the “datafication” of everything continues to accelerate. This mega-trend keeps gathering steam, powered by the intersection of

mattturck.com

 

'AI' 카테고리의 다른 글

Data & AI Landscape (2019)  (0) 2020.01.17

+ Recent posts