在阅读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 包,他可以讓你 setup 之後以命令的方式運行
直接運行,傳統的
Flask
启动方式一般就是app.run()
或者python manage.py runserver
希望對題主有幫助。
補充:
其實,
關聯,因為不需要關聯這個,作者已經在 🎜 中寫好了。 🎜setup.py
里面也会有依赖的列表,所以,在 setup 的时候无需担心会和requirements.txt
关联,因为不需要关联这个,作者已经在setup.py
裡面也會有依賴的列表,所以,在 setup 的時候無需擔心會和在我看了requirements.txt是必須的這個聲明了你的專案引入哪些第三方函式庫。作為一個flask web應用setup.py好像沒有什麼意義。 。 。
setup.py
是安装你自己写的模块,一般依靠执行sudo python setup.py install
,requirements.txt
是指明这个模块所依赖的模块,一般执行sudo pip install -r requirements.txt
來安裝依賴模組。