Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

p568 docker-compose build 질문입니다~

3 years, 8 months ago

yepp4359 yepp4359

안녕하세요 저자님~

페이지 568 실행중에

InstallationError: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

이란 말이 자꾸 떠서 실패중에 있습니다 ㅠ

저도 allauth를 설치하며 같이 설치된것 같은데요~(pyJWT도 설치되었는데 이것은 뭐때문에 같이 설치된건지도 모르겠습니다 ㅠ)

저자님의 requirements.txt를 떠와서 해보면 성공할 것 같긴 하지만 향후 웹의 화면을 업데이트 하며 앞으로 다른 라이브러리를 추가할 경우에 종종 위의 에러를 볼 수 있을것 같아서 질문을 남깁니다

지금도 업데이트된버전으로 인해 517 에러를 본것처럼요?

(현재는 pandas를 추가로 설치해서 pep517에러를 보고있습니다)

위의 에러를 일단 통과해서 저자님의 requirements로 일단 컴포즈를 하고 책을 따라가면

개발환경이 우분투에 구축이 되는 것이잖아요??

일단 책대로 우분투에 개발환경은 구축이 된다면 그곳에 향후에 

cryptography나 pandas를 설치하는건 사실 어쩌면 별것 아닌 일이잖아요?

의존성도 문제없고..

다만 pep 517에러를 일으키며 도커가 못하는거지..


혹시 저자님의 requirements로 넘어간다음 우분투에서 그밖의 모듈을 설치한다면 똑같이 사용할 수 있을까요??


꼭 좀 코멘트를 부탁드립니다

항상 감사드립니다


taegon
taegon   3 years, 8 months ago

안녕하세요.

저희 책을 선택해주셔서 감사합니다. 책을 따라 구현해서 거의 마지막 부분까지 도달하신 것 같네요.

cryptography 설치 관련한 이슈는 책을 발간한 이후에 인지하게 되었습니다. 집필 과정에서 최대한 따라하는 과정에서 오류가 없도록 체크를 했음에도 불구하고, 변화하는 환경에 예기치 못한 문제들을 발견하게 되네요.

우선 짧게 답변드리자면, 완벽한 해결책은 아직 저도 찾지 못했습니다. 일단 제가 구축한 환경에서는 에러가 항상 발현하는 것이 아니었고, 에러가 발생하더라도, 몇가지 조치 후에 해결이 되기도 하였습니다. 하지만 원인과 해결책 사이가 확실하게 말씀드릴 수 있는 만큼이 아닙니다.

그럼에도 불구하고 추천드리는 해결방법은 AWS에서 os를 우분투 대신 aws linux 2를 쓰는 것입니다. 이미 소스코드를 깃헙으로 관리하고 계시다면, OS를 바꾸는 작업이 그렇게 어렵지는 않을 것입니다. cryptography만 설치하는 것은 문제가 없으실텐데, requirement.txt로 설치하게 되면 의존성 관계때문에 cryptography를 설치하고, 이 과정에서 문제가 발생하실 겁니다. 여러번의 테스트를 해본 결과 aws linux 2에서는 문제가 없었지만, 우분투에서만 문제가 간간히 재현되었습니다.

오에스를 바꾸지 않고 우분투에서 직접 문제를 해결하시려면 몇가지 시도해 보실 수 있는 방법들이 있습니다. 이 중 몇가지를 통해서 해결이 되실 수도 있습니다만, 확실하게 해결된다고 말씀을 못 드리겠습니다. 제가 다양하게 시도를 해보았으나, 해결이 되기도 하고, 해결이 되지 않기도 한데, 테스트가 중첩되면서 어떤 방법 때문에 해결이 되었는지 정확히 분간하기가 어려웠기 때문입니다.

- pip를 최신버전으로 업데이트
- requirements.txt 파일에 적힌 버전을 지우고 설치. cryptography==3.1.1  -> cryptography
- 관련 라이브러리 설치: sudo apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo


마지막으로 말씀하신 것처럼, 저희가 제공해드린 requirement.txt 파일로 문제없이 설치가 되신다면, 이렇게 설치하신 후, 추가적으로 pip를 이용하여 라이브러를 설치하셔도 됩니다. 그리고 설치한 환경을 저장하시려면 pip freeze를 이용하여 환경설정을 저장해두시면 됩니다.

이 에러로 도커가 실행되지 않는 것은 설치과정에서 에러가 발생한 상황이므로 문제가 되는 모듈을 제거 후 설치를 하시면 도커가 실행이 됩니다. 도커가 운영되는 상황에서 도커 인스턴스에 필요한 모듈을 추가적으로 설치하시면 됩니다. 환경을 저장해두지 않으시면, 도커 인스턴스를 새롭게 만들게 될 때, 추가로 설치한 모듈이 사라지는 것인데, 이미지를 삭제하거나 새로 빌드하지 않으시면, 추가 설치된 모듈을 계속 쓰실 수 있습니다.

도움이 되셨길 바라며, 추가적으로 질문이 있으시면 언제든 남겨주세요.

Updated: March 1, 2021, 2:40 p.m.

wnsdud3119
wnsdud3119   3 years, 8 months ago

위의 방법으로도 안되시는 분들을 위해 제가 해결한 방법을 공유합니다.

Dockerfile 에서 추가로 설치 후 

RUN apk add postgresql-dev gcc python3-dev musl-dev zlib-dev jpeg-dev libffi-dev openssl-dev cargo

requirements.txt

cryptography>=2.8,<=3.2.6
PyJWT

수정 후 잘 되었습니다.

Updated: March 3, 2021, 11:50 a.m.

yepp4359
yepp4359   3 years, 8 months ago

해결했고 방법 공유합니다..

위의 말씀처럼 dockerfile에 필요한 모듈이 없나 점검하시기 바랍니다..


의존성 문제가 다 해결되었음

Updated: March 6, 2021, 8:49 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A