Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make requietments.txt for development #54

Open
Perlmint opened this issue Mar 18, 2015 · 18 comments
Open

make requietments.txt for development #54

Perlmint opened this issue Mar 18, 2015 · 18 comments

Comments

@Perlmint
Copy link
Contributor

requirements를 release버전과 develop버전으로 나누는게 좋을 듯
개발 환경을 위해서 기본으로 sqlite로 설정 되어있는데도 로컬 개발 환경에서는 필요없는 mysql라이브러리 설치하다가 실패가 뜸.

@TintypeMolly
Copy link
Contributor

일단은 mysql은 wheel로 설치하면 되고. 그다지 필요 없을 것같은데... 윈도에서만 생기는 문제 아님?
혹시 requirements.txt OS별 대응 가능하다던가 한가?
파일 늘리는거면 반대고 아니라면 찬성.

@Perlmint
Copy link
Contributor Author

맥에서도 오류 떴던 것 같은데

조금 꼼수를 부려서 python스크립트로 설치하게 하면 어떨까나

import pip

req_list = ['Jinja2==2.7.3',
                 'MySQL-python',
                 'SQLAlchemy==0.9.8',
                 'Twisted==14.0.2',
                 'redis',
                 'Markdown==2.5.2',
                 'git+https://github.com/TintypeMolly/bleach@124-parse-email-fix',
                 'Pygments==2.0.2']

pip.main(['install'] + req_list)

이 방법의 단점은 pip --freeze를 그냥 못쓰는 것이지만...

@TintypeMolly
Copy link
Contributor

pip freeze가 왜 안됨? 될 것 같은데. 음. 근데 이렇게 설치하는 사례를 내가 별로 못본 것 같음. 적절하게 다른사람들도 표준적으로 사용하는 절차가 있다면 이걸 도입해도 좋지만.

@Perlmint
Copy link
Contributor Author

pip freeze를 못쓴다는 의미가 그냥 그 결과물을 그대로 저장하는 것이 아니라 그걸 기반으로 코드를 고쳐야 한다는 의미였음

이런 사례는 나도 못봤는데 그냥 제안으로 꺼내본 것이고 보통은 선택적(대체가 가능한) 의존성은 requirements.txt에 안넣는 방법을 선택하는 것 같음. 대신에 문서에 어떤 모듈을 사용하려면 뭘 설치하라는 식으로 적어두는 것 같은데.

@angdev
Copy link
Member

angdev commented Mar 19, 2015

@TintypeMolly
Copy link
Contributor

음 난 이거 그냥 놔뒀으면 함. 윈도우 환경만을 위해 뭔가 더러운게 필요하다는게 좀 석연찮은데.

@Perlmint
Copy link
Contributor Author

@TintypeMolly 그렇다면 그냥 MySQL-python이랑 redis는 readme에 남겨두고 requirements.txt에서는 삭제하는 것은 어떤가
저 둘은 주로 서비스 운영에서 필요한 추가 의존성이라고 여겨지는데

@angdev
Copy link
Member

angdev commented Mar 21, 2015

제 생각엔 메인 requirements.txt는 production이 맞는 것 같고 production, development 환경 분리는 되어야한다고 봅니다. 제가 언급한 방법과 스크립트 작성 이외에 딱히 방법은 없는 것 같은데 django/djangoproject.com 에서도 일단 그렇게 쓰고 있긴 하네요.

그리고 mysql이랑 윈도우랑은 무슨 관계인지 잘 모르겠는데 단순히 prerequisite 문제인 것 같고 이건 뭐 OS에 상관없이 깔아줘야겠죠. redis도 깔아줘야하는 것은 마찬가지이니 prerequisite를 문서에 쓰는게 맞는 것 같고 나머지는 pip install -r requirements/dev.txt 같은 걸로 할 수 있는게 낫지 않을까요?

@Perlmint
Copy link
Contributor Author

음... 그냥 내가 감을 잘못 잡고 있었던 것 같은데
이 프로젝트가 홈페이지의 소스를 관리하는 것이라면 production에 mysql을 강제하고 있어도 상관 없어보임.
하지만 말 그대로 'production'환경에만 필요한 의존성이니 @fegs가 예시로 든 djangoproject.com처럼 관리하는 것이 낫다고 생각함.

+스크립트를 생각한 이유는 처음 웹 개발 하는 사람들에게는 더 편하지 않을까? 라는 생각임

@angdev
Copy link
Member

angdev commented Mar 24, 2015

관계가 있는게 아니라 그 환경에 prerequisite가 안 갖춰진거죠. redis 없으면 맥이나 리눅스에서도 서버 안 뜨잖아요.

@TintypeMolly
Copy link
Contributor

pip install -r requirements.txt 가 한방에 안 되고 에러가 나는건 윈도우 환경뿐임. 맥이나 리눅스라면 큰문제 없이 잘 돌아가. 그래서 윈도우랑 관계가 있다는거임.
그리고 윈도우도 존나 고생하면 pip install mysql-python 이 에러가 안나긴 해. 우분투에선 apt-get install libmysqlclient-dev (libmysqlclient18-dev 였던가?) 한번 해주면 한방에 해결되는 의존성이 윈도우에선 그렇게 안 될 뿐이지. 애초에 빌드가 "불가능" 하다면 mysql의 wheel 바이너리 판도 존재하지 않겠지. 근데 내가 직접 빌드해보려고 3시간 삽질해봤는데, 그냥 wheel 까는게 맞음.

@TintypeMolly
Copy link
Contributor

관계 있는 거 맞음 -_-; 니가 빌드 직접 해보던가. mysql-python 윈도우 빌드는 좀 어렵네 수준이 아니라 (검열삭제) 윈도우 못해먹겠네가 맞다고.

@TintypeMolly
Copy link
Contributor

그리고 사실 virualenv로 다시 자주 밀고 까는 것도 아니고, 개발환경이든 배포환경이든 설정할 때 한번만 까는 거라서 그냥 production에만 맞추고 싶고, 개발환경에선 그냥 mysql 자기가 알아서 주석처리 하던가 wheel 받아서 수동으로 깔던가 하는게 맞는 것 같은데. 난 requirements.txt는 좀 더 메타적인 의미에 집중하는게 맞다고 봄.

@Perlmint
Copy link
Contributor Author

나는 mysql이 yuzuki를 실행하는데 있어서 '반드시 필요한' prerequisite인지가 결정하는데 있어서 중요한 요소라고 생각하는데
반드시 필요한 것은 아니라고 보고있고 이와 비슷한 경우를 다른 프로젝트들에서는 각 db backend별로 설정파일이나 prerequisite등을 각각 제공하는 방식으로 해결을 하고 있음. 그래서 필수가 아니라는 이유에서부터 빠졌으면 좋겠다가 내 의견을 정리한 것임

@TintypeMolly
Copy link
Contributor

음 MySQL 자체가 Yuzuki의 prerequsite가 아니다? 그건 그렇긴 하네. 내가 일단 설계할때 항상 mysql을 염두하고잡고 있긴 한데, 사실 없다고 크게 문제될 기능은 안쓰고 있는 것 같기도 하고? 그렇게 말하면 또 맞는 것 같기도 하고. 후에 mysql-specific 기능을 쓰게 되면 그때라도 다시 추가해도 상관 없으려나

@TintypeMolly
Copy link
Contributor

근데 redis나 mysql 이외의 db를 완벽하게 지원해서 굴러가게 할 로드맵은 없음. 내가 이걸 일반적인 CMS 프로젝트로 발전시킨다면 필요있을 일이긴 하지만, 난 앞으로도 모든 설계는 mysql, redis에 맞춰서 할거임. 사실 니들 말도 투명성으로 따지고 들자면 그럴듯 하긴 한데, 내가 앞으로 저 둘만을 염두에 둘거라서 빼기 거시기한 느낌을 갖는 것도 또한 사실이다.

@TintypeMolly
Copy link
Contributor

야 니들 근데 실시간인데 걍 채팅방으로 가자

@TintypeMolly
Copy link
Contributor

install.py 든 make든 설치/유지보수 스크립트를 만들 때까진 현황유지.
만든 다음엔 mysql-python은 requirements.txt에서 뗀다. 탕탕.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants