在阅读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
Sama ada soalan ini perlu sebenarnya bergantung pada sifat projek Secara umumnya, akan ada kedua-duanya, dan yang terbaik adalah mempunyai kedua-duanya.
setup.py
Fail ini digunakan untuk mengurus modul Anda boleh membungkus projek anda sebagai modul dan memuat naiknya ke pypi Anda juga boleh meletakkan projek sebagai modul ke dalam direktori modul pemuatan sistem Python.requiremens.txt
Fail ini menyenaraikan kebergantungan bukan projek yang dirujuk oleh projek anda Selain daripada itu, ia tidak mempunyai fungsi lain.Oleh itu, dapat dilihat bahawa tidak ada konflik antara kedua-dua projek ini, dan terdapat keperluan besar untuk wujud bersama.
Ini penting jika projek anda perlu disimpan sebagai modul sistem atau boleh dipasang sebagai arahan sistem
setup.py
Jika projek anda boleh dijalankan secara langsung, maka
requirements.txt
juga penting.Jika anda memerlukan kedua-dua fungsi, maka kedua-dua fail tidak boleh hilang.
Adakah anda memerlukan kedua-dua fungsi?
Mesti ada satu, dan terdapat banyak lagi. Contohnya, Flask menyokong dua kaedah:
Mulakan sebagai arahan sistem Pakej Klik baharu telah ditambahkan dalam Flask 0.11.1, yang membolehkan anda menjalankannya sebagai arahan selepas persediaan
dijalankan secara langsung Kaedah permulaan
Flask
tradisional biasanyaapp.run()
ataupython manage.py runserver
Semoga ia berguna kepada yang bertanya.
Tambahan:
Malah,
setup.py
juga akan mempunyai senarai kebergantungan, jadi tidak perlu risau tentang dikaitkan denganrequirements.txt
semasa persediaan, kerana tidak perlu mengaitkan ini, pengarang sudah menulisnya dalamsetup.py
.Saya melihat bahawa requirements.txt adalah satu kemestian Ia mengisytiharkan perpustakaan pihak ketiga yang diperkenalkan oleh projek anda. Sebagai aplikasi web flask setup.py nampaknya tidak masuk akal. . .
setup.py
ialah memasang modul yang ditulis sendiri, biasanya dengan melaksanakansudo python setup.py install
,requirements.txt
menunjukkan modul yang bergantung pada modul ini Secara amnya, jalankansudo pip install -r requirements.txt
untuk memasang modul bergantung.