在阅读Kenneth Retiz写的ptyhon最佳实践文章中关于如何构建一个好的目录结构的时候,发现有这样一个问题,可以同时存在setup.py
文件以及requirements.txt
文件,想请问一下这两者之间有什么区别与联系。
例如有下面这样的一个flask
应用目录结构,setup.py与requirements.txt两个文件同时存在是否有必要?
├── app
├── docs
├── test
├── config.py
├── manage.py
├── requirements.txt
├── setup.py
├── Makefile
├── README.md
└── LICENSE
이 질문이 실제로 필요한지 여부는 프로젝트의 성격에 따라 다릅니다. 일반적으로 둘 다 존재하며 둘 다 갖는 것이 가장 좋습니다.
setup.py
이 파일은 모듈을 관리하는 데 사용됩니다. 프로젝트를 모듈로 패키징하여 pypi에 업로드할 수도 있습니다. Python 시스템 로딩 모듈 디렉터리에 모듈로 넣을 수도 있습니다.requiremens.txt
이 파일은 프로젝트가 참조하는 비프로젝트 종속성을 나열합니다. 그 외에는 다른 기능이 없습니다.그러므로 이 두 프로젝트 사이에는 갈등이 없으며, 공존할 필요성이 크다고 볼 수 있습니다.
프로젝트를 시스템 모듈로 저장해야 하거나 시스템 명령으로 설치할 수 있는 경우 이는 필수입니다.
setup.py
프로젝트를 직접 실행할 수 있다면
requirements.txt
도 필수입니다.두 가지 기능이 모두 필요한 경우 두 파일 모두 빠질 수 없습니다.
두 가지 기능이 모두 필요한가요?
하나가 있어야 하고 더 많은 방법이 있습니다. 예를 들어 Flask는 두 가지 방법을 지원합니다.
시스템 명령으로 시작 Flask 0.11.1에 새로운 Click 패키지가 추가되어 설치 후 명령으로 실행할 수 있습니다.
은 직접 실행됩니다. 전통적인
Flask
시작 방법은 일반적으로app.run()
또는python manage.py runserver
질문자에게 도움이 되기를 바랍니다.
보충:
사실
setup.py
에도 종속성 목록이 있으므로 설정 중에requirements.txt
과 연결되는 것에 대해 걱정할 필요가 없습니다. 이를 연결할 필요가 없기 때문에 작성자가 이미 에 작성했습니다.setup.py
.requirements.txt는 프로젝트에 도입되는 타사 라이브러리를 선언하는 필수 항목입니다. 플라스크 웹 애플리케이션으로서 setup.py는 의미가 없는 것 같습니다. . .
을 실행하여 직접 작성한 모듈을 설치하는 것입니다.setup.py
은 일반적으로sudo python setup.py install
,requirements.txt
은 이 모듈이 의존하는 모듈을 나타냅니다. 일반적으로 종속 모듈을 설치하려면sudo pip install -r requirements.txt
을 실행하세요.