2020년 12월 9일
kivy 로 android 개발을 할 수 있다는 이야기를 들어서, kivy 를 한번 설치해 보았다. 그런데, pip install kivy 를 실행하였더니 엄청난 에러와 함께 설치가 실패했다.
환경은 : windows 10, python 3.8 64 bit, venv 로 만들어 놓은 가상환경.위 내
(v3864) C:\PYENVS>pip install kivy
Collecting kivy
Using cached Kivy-1.11.1.tar.gz (23.6 MB)
ERROR: Command errored out with exit status 1:
command: 'c:\pyenvs\v3864\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\dwyoo\\AppData\\Local\\Temp\\pip-install-5q5cy0vc\\kivy_94110e505e9f425ca06e32d95e031e7f\\setup.py'"'"'; __file__='"'"'C:\\Users\\dwyoo\\AppData\\Local\\Temp\\pip-install-5q5cy0vc\\kivy_94110e505e9f425ca06e32d95e031e7f\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\dwyoo\AppData\Local\Temp\pip-pip-egg-info-k328_0hq'
cwd: C:\Users\dwyoo\AppData\Local\Temp\pip-install-5q5cy0vc\kivy_94110e505e9f425ca06e32d95e031e7f\
Complete output (396 lines):
fatal: not a git repository (or any of the parent directories): .git
WARNING: Skipping page https://github.com/kivy-garden/garden/archive/master.zip because the HEAD request got Content-Type: application/zip.The only supported Content-Type is text/html
ERROR: Command errored out with exit status 1:
command: 'c:\pyenvs\v3864\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\dwyoo\\AppData\\Local\\Temp\\pip-wheel-doxr6m5q\\cython_73fac2393c7c441996d8b01d828c2dd1\\setup.py'"'"'; __file__='"'"'C:\\Users\\dwyoo\\AppData\\Local\\Temp\\pip-wheel-doxr6m5q\\cython_73fac2393c7c441996d8b01d828c2dd1\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\dwyoo\AppData\Local\Temp\pip-wheel-n__1tzvf'
cwd: C:\Users\dwyoo\AppData\Local\Temp\pip-wheel-doxr6m5q\cython_73fac2393c7c441996d8b01d828c2dd1\
Complete output (321 lines):
Unable to find pgen, not compiling formal grammar.
running bdist_wheel
running build
running build_py
creating build
위 내용은 에러메시지의 시작부분. Kivy-1.11.1.tar.gz 를 다운받아서 깔려고 하고 있다. tar.gz 는 플랫폼에 맞게 빌드된 것이 아니라, 소스를 내려받아 설치하려고 한다는 뜻이다. kivy 와 같이 거대한 패키지의 경우 tar.gz 을 받는다면, 십중팔구 설치에 문제가 발생한다.
소스를 임시폴더에 풀꼬, 그 안의 소스로 빌드를 시작했다.
copying Cython\Utility\Overflow.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\Printing.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\Profile.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\StringTools.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\TestUtilityLoader.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\TypeConversion.c -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\arrayarray.h -> build\lib.win-amd64-3.8\Cython\Utility
copying Cython\Utility\CppSupport.cpp -> build\lib.win-amd64-3.8\Cython\Utility
running build_ext
building 'Cython.Plex.Scanners' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
----------------------------------------
ERROR: Failed building wheel for cython
ERROR: Failed to build one or more wheels
Traceback (most recent call last):
File "c:\pyenvs\v3864\lib\site-packages\setuptools\installer.py", line 128, in fetch_build_egg
subprocess.check_call(cmd)
File "C:\Programs\Python3864\lib\subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['c:\\pyenvs\\v3864\\scripts\\python.exe', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', 'C:\\Users\\dwyoo\\AppData\\Local\\Temp\\tmptos30mw1', '--quiet', '--find-links', 'https://github.com/kivy-garden/garden/archive/master.zip', 'cython!=0.27,!=0.27.2,<=0.29.10,>=0.24']' returned non-zero exit status 1.
에러의 중간부분 Microsoft Visual C++ 14.0 is required. 라는 부분이 나온다. 소스파일 중에 c, cpp 소스가 있어서, 이걸 빌드하여 설치를 하려고 한다. 빌드환경을 설치하면 이 부분은 넘어가겠지만, 다른 에러가 나올 가능성도 다분하다. 패키지 설치하나 하면서 이런 고생은 하고 싶지 않다.
그래서 어찌할까 확인한다. 내가 원하는 건, 내 환경 ( 윈도우 64비트, 파이썬 3.8 ) 용 미리빌드된 설치파일이다. pip 로 설치되는 패키지들이 있는 pypi 웹사이트에 가본다. (구글로 pypi kivy 로 검색하면, pypi.org/project/Kivy 페이지를 찾아준다. 여기에서 옆의 메뉴의 downloads 를 누르면 pypi.org/project/Kivy/#files 페이지로 넘어가서 pip 로 내려받을 수 있는 파일들의 목록이 나온다.
여기서 보면, 파일명으로 어떤 플랫폼 용 파일인지를 알 수 있다. 예를 들어, Kivy-1.11.1-cp36-cp36m-win_amd64.whl 파일은 kivy 1.11.1 패키지의 c 파이썬 3.6 윈도우 64비트 용 파일이다. Kivy-1.11.1-cp37-cp37m-manylinux2010_x86_64.whl 파일은 kivy 1.11.1 패키지의 c 파이썬 3.7 리눅스 64비트용 파일이다.
이 목록의 오른쪽 두번째 컬럼에 cp36, cp37 등등이 다시 따로 쓰여져 있다. 보면, cp38 은 없다. 즉, 파이썬 3.8 용으로 미리 빌드된 설치패키지는 아직 존재하지 않는다는 뜻이다. 그래서, 제일 마지막에 있는 소스파일이 내려받아졌고, pip 는 이 소스파일을 어찌어찌 빌드하려고 했었고, 빌드환경이 없기 때문에 설치가 실패한 것이다.
그럼, 해결방법은 나왔다. 파이썬 3.7 64비트 환경을 꾸며서 설치하면 된다. (파이썬 3.8의 기능을 못 쓴다는 게 아쉽지만, 3.7도 2020년 현재 그런대로 쓰기 괜찮은 버전이다.)
나는 3.7 환경도 만들어두고 있다. 3.7 환경에서 설치해 보았다. 아래 설치명령을 보면, 위 목록에서 보았던, cp37-cp38 어쩌고 whl 파일이 받아져서 깔끔하게 설치된 것을 볼 수 있다.
(v3764) C:\PYENVS>pip install kivy
Collecting kivy
Using cached Kivy-1.11.1-cp37-cp37m-win_amd64.whl (4.1 MB)
Requirement already satisfied: pygments in c:\pyenvs\v3764\lib\site-packages (from kivy) (2.7.0)
Requirement already satisfied: docutils in c:\pyenvs\v3764\lib\site-packages (from kivy) (0.16)
Requirement already satisfied: Kivy-Garden>=0.1.4 in c:\pyenvs\v3764\lib\site-packages (from kivy) (0.1.4)
Requirement already satisfied: requests in c:\pyenvs\v3764\lib\site-packages (from Kivy-Garden>=0.1.4->kivy) (2.24.0)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\pyenvs\v3764\lib\site-packages (from requests->Kivy-Garden>=0.1.4->kivy) (1.25.10)
Requirement already satisfied: certifi>=2017.4.17 in c:\pyenvs\v3764\lib\site-packages (from requests->Kivy-Garden>=0.1.4->kivy) (2020.6.20)
Requirement already satisfied: chardet<4,>=3.0.2 in c:\pyenvs\v3764\lib\site-packages (from requests->Kivy-Garden>=0.1.4->kivy) (3.0.4)
Requirement already satisfied: idna<3,>=2.5 in c:\pyenvs\v3764\lib\site-packages (from requests->Kivy-Garden>=0.1.4->kivy) (2.10)
Installing collected packages: kivy
Successfully installed kivy-1.11.1
see also : daewonyoon.tistory.com/337
'프로그래밍 > Python' 카테고리의 다른 글
[통계학|scipy] 정규분포 모집단의 표본분산의 분포는 정말 카이제곱분포를 따를까 (0) | 2020.12.22 |
---|---|
[통계학|Scipy] scipy 로 정규분포 그래프 + 구간확률 구하기. (0) | 2020.12.10 |
[Python] 윈도우 cmd 창에서 python 을 입력하면 윈도우 스토어 설치화면이 나온다. (0) | 2020.12.05 |
[Python] 분수의 무제한 소수표현 구하기 (3) | 2020.12.04 |
[Python] Turtle 로 프랙탈 트리 그리기 (0) | 2020.12.02 |