ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows Openstack SDK Client (CLI) Install
    Infra/DevOps 2023. 3. 18. 01:15
    Openstack 이란?

    오픈 소스 클라우드 컴퓨팅 소프트웨어 프로젝트로, 기업용 프라이빗 클라우드, 퍼블릭 클라우드 및 하이브리드 클라우드를 구축하는 데 사용한다.

     

    설치하기

    우선 Python 을 설치해준다. 

    https://www.python.org/downloads/windows/

     

    Python Releases for Windows

    The official home of the Python Programming Language

    www.python.org

     
    Python 3.5.0 version 이상으로 설치해주자.
    그 아래 버전은 path 를 자동으로 잡아주지 않아서 직접 설정해줘야하는데, 이게 생각보다 어렵다.
    참고로 openstack 공식 문서에 따르면 Python 3.x 미만 version 은 이제 지원하지 않는다고 나와 있다.

     

    Python 3 를 설치하게 되면 그에 맞는 pip 가 함께 설치되는 장점이 있다.

    pip 는 Python 용 패키지 설치 프로그램으로, Python 내장 라이브러리는 아니다.

    하지만 pip 를 통해 좀 더 쉽게 여러 모듈을 설치할 수 있는 편리함이 있다.

     

    설치 후, 진짜 설치되었는지 확인해보자. 

    pip3 -V
    pip3 --version

    아래와 같은 결과가 나오면 성공이다.

    pip 23.0.1 from "경로"

     

    pip 가 설치되었으면 공식문서에 나와있는대로 openstackclient 를 명령어로 설치해보자.

    pip3 install python-openstackclient

     
    그런데 에러가 났다.

    Collecting pycparser Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
    Building wheels for collected packages: netifaces Building wheel for netifaces (setup.py) ... error
    error: subprocess-exited-with-error
    × python setup.py bdist_wheel did not run successfully.
    exit code: 1
    ╰─> [7 lines of output]
    C:\Users\사용자\AppData\Local\Programs\Python\Python310\lib\site-packages\setuptools\config\setupcfg.py:516: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
    warnings.warn(msg, warning_class)
    running bdist_wheel
    running build
    running build_ext
    building 'netifaces' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
    [end of output]
    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for netifaces
    .
    .
    .

    무슨 에러인지 확인해보면 빌드 도구가 없으니 해당 모듈을 설치할 수 없다는 이야기다.
     
    오류를 해결하려고 무작정 구글링 했을 때는 직접 모듈을 설치하거나 이미 바이너리로 컴파일된 걸 받으면 된다는 안내뿐이다. 그렇게 해결하려고 시도해 보았으나 설치 안 되어있는 모듈이 몇 개인지도 모르는 상황이었고, 적정한 위치에 안 넣어주면 적용이 안 됐다.


    나처럼 파이썬을 처음 깔아본 사람은 일단 오늘 안에 해결하기 어렵다.

    그래서 결국 다른 방법을 찾아보았다.
    다시 천천히 오류 코드를 읽어보니, 친절하게도 커맨드에서 어디에서 무엇을 설치하면 좋을지 알려주고 있었다.

    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

     

    들어가서 설치해보자.

    https://visualstudio.microsoft.com/visual-cpp-build-tools/

     

    Microsoft C++ Build Tools - Visual Studio

    The Microsoft C++ Build Tools provides MSVC toolsets via a scriptable, standalone installer without Visual Studio. Recommended if you build C++ libraries and applications targeting Windows from the command-line (e.g. as part of your continuous integration

    visualstudio.microsoft.com

    20~30분정도 걸리므로 느긋하게 기다리자.
    그리고 다시 pip 로 설치해보자.

    pip3 install python-openstackclient

     

    이제 에러가 안 뜬다!

    Successfully built netifaces
    . . .
    Successfully installed PyYAML-6.0
    . . .

    위와 같이 에러 없이 진행되면 성공이다.
    정말 잘 설치되었는지 아래의 명령어로 확인해보자.

    openstack --help

    위와 같이 잘 뜨면 성공이다.

     

     

    Q. 그렇다면 왜 리눅스에서는 그냥 되던 게 윈도우는 빌드 도구를 따로 깔아줘야 됐던 걸까? 리눅스는 빌드 도구가 이미 깔려있는 걸까?

    A. 그렇지 않다. 기계적으로 치던 명령어에 답이 있다.

     

    리눅스는 GCC(GNU Compiler Collection) 라는 빌드 도구를 사용하여 컴파일을 한다.
    이 프로그램에는 컴파일을 위해 필요한 컴파일러와 라이브러리를 포함하고 있다.
    리눅스에 기본적으로 gcc 가 설치되어 있다고 생각하겠지만 이미 명령어를 통해 설치했을 것이다.

    sudo apt-get install
    • sudo 는 관리자 권한 작업 수행
    • apt 는 패키지의 의존성 관리를 자동으로 처리(설치, 제거, 업그레이드)하는 도구


    이 때, 뒤에 모듈명 gcc 를 붙이면 gcc 만 설치되고 그냥 install 까지만 쓰면 모든 모듈을 다 설치하게 된다.

     

    윈도우는 Microsoft Visual Studio 또는 MinGW와 같은 빌드 도구를 사용한다.

    이것은 C/C++ 코드로 작성된 것을 컴파일해준다.

    여기서 한 가지 의문이 또 생길 것이다.

     

     

    Q. C/C++ 은 전혀 안 쓰는데 왜 필요한 걸까?

    A. pip 로 설치하는 Python 패키지 중에서 C/C++ 코드로 만들어진 것들이 존재하기 때문이다.

     

     

     

    ※ 알게 된 것 정리.

    • pip 는 파이썬 내부 패키지가 아니라 완전 외부 모듈이다.
    • 리눅스와 윈도우는 빌드 도구가 달라서 컴파일이 안 될 수도 있다.
    • 운영체제의 이해에 대한 중요성.

     

Designed by Tistory.