Jadual Kandungan
PyScaffold Buat projek
PyBuilder

Puisi terakhir, saya rasa ini adalah binaan Python yang lebih matang dan lebih aktif Ia mempunyai fungsi pengurusan amanah yang lebih berkuasa Gunakan puisi tambah boto3 tambah dependencies, poetry show --tree memaparkan pokok dependency. Lihatlah cara memasang dan mencipta projek
Rumah pembangunan bahagian belakang Tutorial Python Empat alat pengurusan dan pembinaan projek Python, disyorkan untuk pengumpulan!

Empat alat pengurusan dan pembinaan projek Python, disyorkan untuk pengumpulan!

Apr 12, 2023 pm 10:52 PM
python pengurusan projek Membina alatan

Empat alat pengurusan dan pembinaan projek Python, disyorkan untuk pengumpulan!

Python tidak mempunyai alat pengurusan projek dan pembinaan standard de facto untuk sekian lama, menghasilkan pelbagai struktur projek Python dan kaedah pembinaan. Ini mungkin mencerminkan kehendak bebas Python.

Tidak seperti Java, ia telah melalui pembinaan manual awal, kepada Ant separa automatik, dan kemudian kepada Maven, yang pada asasnya adalah standard de facto. Dalam tempoh ini, Maven turut menerima cabaran daripada Gradle lain (terutamanya dipromosikan oleh projek Android), SBT (terutamanya projek Scala), Ant+Ivy, Buildr, dll., tetapi sukar untuk menggoyahkan status Maven di dunia dan yang lain hampir mengikut susun atur direktori Maven.

Kembali dalam Python, terdapat alatan pengurusan pakej seperti pip, pipenv, dan conda, tetapi tiada persetujuan mengenai susun atur direktori projek.

Banyak aspek pembinaan masih mengikut kaedah Makefile tradisional, dan kemudian tambah setup.py dan build.py untuk menggunakan kod program untuk memasang dan membina. Mengenai susun atur direktori projek, ada yang membuat templat projek, dan kemudian membuat alat untuk menggunakan templat projek.

Berikut ialah gambaran ringkas tentang penggunaan empat alatan

  1. CookieCutter
  2. PyScaffold
  3. PyBuilder
  4. Puisi

CookieCutter Struktur direktori projek Python klasik

$ pip install cookiecutter
$ cookiecutter gh:audreyr/cookiecutter-pypackage
# 以 github 上的 audreyr/cookiecutter-pypackage 为模板,再回答一堆的问题生成一个 Python 项目
......
project_name [Python Boilerplate]: sample
......
Salin selepas log masuk

Templat projek akhir dihasilkan oleh cookiecutter Ia kelihatan seperti berikut:

$ tree sample
sample
├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│ ├── Makefile
│ ├── authors.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── history.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── make.bat
│ ├── readme.rst
│ └── usage.rst
├── requirements_dev.txt
├── sample
│ ├── __init__.py
│ ├── cli.py
│ └── sample.py
├── setup.cfg
├── setup.py
├── tests
│ ├── __init__.py
│ └── test_sample.py
└── tox.ini
3 directories, 26 files
Salin selepas log masuk

Ini mungkin rangka kerja utama struktur direktori yang lebih popular Elemen utama ialah:

$ tree sample
sample
├── Makefile
├── README.rst
├── docs
│ └── index.rst
├── requirements.txt
├── sample
│ ├── __init__.py
│ └── sample.py
├── setup.cfg
├── setup.py
└── tests
 ├── __init__.py
 └── test_sample.py
Salin selepas log masuk

Ulangi direktori sampel dalam. projek dan letakkan Python dalam fail Sumber direktori, direktori ujian mengandungi fail ujian, serta direktori dokumen untuk dokumentasi, README.rst, dan fail persediaan lain, setup.cfg dan Makefile yang digunakan untuk membina.

Ini sebenarnya adalah struktur projek Python yang sangat klasik Binaan seterusnya menggunakan arahan make Enter dan anda akan melihat arahan yang ditakrifkan dalam fail Makefile.

$ make
cleanremove all build, test, coverage and Python artifacts
clean-buildremove build artifacts
clean-pycremove Python file artifacts
clean-test remove test and coverage artifacts
lint check style
test run tests quickly with the default Python
test-all run tests on every Python version with tox
coverage check code coverage quickly with the default Python
docs generate Sphinx HTML documentation, including API docs
servedocscompile the docs watching for changes
releasepackage and upload a release
dist builds source and wheel package
installinstall the package to the active Python's site-packages
Salin selepas log masuk

Untuk menggunakan proses binaan di atas, anda perlu memasang pakej yang sepadan, seperti tox, wheel, coverage, sphinx, flake8, semuanya boleh dipasang melalui pip. Kemudian anda boleh membuat ujian, membuat liputan, membuat dokumen, membuat dist, dsb. Antaranya, buat docs boleh menjana dokumen web yang cantik.

PyScaffold Buat projek

PyScaffold Seperti namanya, ia adalah alat yang digunakan untuk mencipta perancah untuk projek Python Pasang dan gunakan:

$ pip install pyscaffold
$ putup sample
Salin selepas log masuk

Projek Python dibuat dengan cara ini Struktur direktori adalah serupa dengan templat yang dipilih oleh cookiecutter sebelum ini, kecuali ia meletakkan fail sumber dalam direktori src dan bukannya direktori sampel.

$ tree sample
sample
├── AUTHORS.rst
├── CHANGELOG.rst
├── CONTRIBUTING.rst
├── LICENSE.txt
├── README.rst
├── docs
│ ├── Makefile
│ ├── _static
│ ├── authors.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── index.rst
│ ├── license.rst
│ ├── readme.rst
│ └── requirements.txt
├── pyproject.toml
├── setup.cfg
├── setup.py
├── src
│ └── sample
│ ├── __init__.py
│ └── skeleton.py
├── tests
│ ├── conftest.py
│ └── test_skeleton.py
└── tox.ini
Salin selepas log masuk

Tox ialah alat yang digunakan untuk membina keseluruhan projek. tox ialah alat ujian dan binaan automatik yang mencipta persekitaran maya Python semasa proses binaan, membenarkan persekitaran yang bersih untuk ujian dan pembinaan.

tox -av boleh memaparkan semua tugas yang ditakrifkan dalam tox.ini:

$ tox -av
default environments:
default -> Invoke pytest to run automated tests
additional environments:
build -> Build the package in isolation according to PEP517, see https://github.com/pypa/build
clean -> Remove old distribution files and temporary build artifacts (./build and ./dist)
docs-> Invoke sphinx-build to build the docs
doctests-> Invoke sphinx-build to run doctests
linkcheck -> Check for broken links in the documentation
publish -> Publish the package you have been developing to a package index server. By default, it uses testpypi. If you really want to publish your package to be publicly accessible in PyPI, use the `-- --repository pypi` option.
Salin selepas log masuk

Gunakan tox -e build, tox -e docs, dsb. perintah yang hendak dilaksanakan

Apabila saya mencuba arahan tox, setiap langkah kelihatan perlahan untuk mencipta mesin maya.

PyBuilder

Sebaik-baiknya melihat alat binaan lain PyBuilder Struktur direktori yang diciptanya sangat hampir dengan Maven >

Selepas selesai, lihat struktur direktorinya:
$ pip install pybuilder
$ mkdir sample && cd sample# 项目目录需手工创建
$ pyb --start-project# 回答一些问题后创建所需的目录和文件
Salin selepas log masuk

Proses pembinaan masih menggunakan perintah pyb Anda boleh menggunakan pyb -h untuk melihat bantuan, dan pyb -t untuk menyenaraikan semua tugas. Tugas PyBuilder ialah Ia ditambah sebagai pemalam, dan pemalam dikonfigurasikan dalam fail build.py.
$ tree sample
.
├── build.py
├── docs
├── pyproject.toml
├── setup.py
└── src
 ├── main
 │ ├── python
 │ └── scripts
 └── unittest
 └── python
Salin selepas log masuk

PyBuilder juga mencipta persekitaran maya sebelum membina atau menguji Bermula dari versi 0.12.9, anda boleh lulus parameter --no-venvs untuk melangkau langkah mencipta persekitaran maya. Jika --no-venvs digunakan, kod Python akan dilaksanakan dalam persekitaran Python semasa yang menjalankan pyb, dan kebergantungan yang diperlukan perlu dipasang secara manual.
$ pyb -t sample
Tasks found for project "sample":
 analyze -Execute analysis plugins.
 depends on tasks: prepare run_unit_tests
 clean - Cleans the generated output.
 compile_sources - Compiles source files that need compilation.
 depends on tasks: prepare
coverage - <no description available>
 depends on tasks: verify
 install - Installs the published project.
 depends on tasks: package publish(optional)
 package - Packages the application. Package a python application.
 depends on tasks: compile_sources run_unit_tests(optional)
 prepare - Prepares the project for building. Creates target VEnvs
 print_module_path - Print the module path.
print_scripts_path - Print the script path.
 publish - Publishes the project.
 depends on tasks: package verify(optional) coverage(optional)
 run_integration_tests - Runs integration tests on the packaged application.
 depends on tasks: package
run_unit_tests - Runs all unit tests. Runs unit tests based on Python's unittest module
 depends on tasks: compile_sources
upload - Upload a project to PyPi.
verify - Verifies the project and possibly integration tests.
 depends on tasks: run_integration_tests(optional)
$ pyb run_unit_tests sample
Salin selepas log masuk


Kebergantungan projek juga mesti ditakrifkan dalam fail build.py.

Kebergantungan di atas akan dipasang apabila pyb dilaksanakan untuk mencipta persekitaran maya, dan ujian serta binaan akan dijalankan di dalamnya.
@init
def set_properties(project):
 project.depends_on('boto3', '>=1.18.52')
 project.build_depends_on('mock')
Salin selepas log masuk


Puisi


Puisi terakhir, saya rasa ini adalah binaan Python yang lebih matang dan lebih aktif Ia mempunyai fungsi pengurusan amanah yang lebih berkuasa Gunakan puisi tambah boto3 tambah dependencies, poetry show --tree memaparkan pokok dependency. Lihatlah cara memasang dan mencipta projek

Projek yang dibuatnya adalah lebih mudah daripada di atas
$ pip install poetry
$ poetry new sample
Salin selepas log masuk

Jika anda memberikan puisi parameter --src baharu, maka sampel direktori fail sumber Ia akan diletakkan dalam direktori src, iaitu sampel/src/sample.
$ tree sample
sample
├── README.rst
├── pyproject.toml
├── sample
│ └── __init__.py
└── tests
 ├── __init__.py
 └── test_sample.py
Salin selepas log masuk


poetry init akan menjana fail pyproject.toml dalam direktori semasa direktori perlu dilengkapkan secara manual.


Ia tidak menumpukan pada penjanaan dokumen, semakan spesifikasi kod atau liputan kod. Konfigurasi projeknya lebih terpusat, semuanya dalam fail pyproject.toml Apakah toml? Ia ialah format fail konfigurasi Tom's Obvious, Minimal Language (https://github.com/toml-lang/toml).


pyproject.toml agak serupa dengan fail package.json NodeJS. Contohnya, tambah puisi, pasang baris arahan puisi

# 往 pyproject.toml 中添加对boto3 的依赖并安装(add 还能从本地或 git 来安装依赖 ),
poetry add boto3
# 将依照 pyproject.toml 文件中定义安装相应的依赖到当前的 Python 虚拟环境中
# 比如在 <test-venv>/lib/python3.9/site-packages 目录中,安装好模块后也可让测试用例使用
poetry install
Salin selepas log masuk

其他主要的

1.poetry build# 构建可安装的 *.whl 和 tar.gz 文件
2.poetry shell# 会根据定义在 pyproject.toml 文件中的依赖创建并使用虚拟环境
3.poetry run pytest# 运行使用 pytest 的测试用例,如 tests/test_sample.py
4.poetry run python -m unittest tests/sample_tests.py# 运行 unittest 测试用例
5.poetry export --without-hashes --output requirements.txt# 导出 requirements.txt 文件, --dev导出含 dev 的依赖,或者用 poetry export --without-hashes > requirements.txt
Salin selepas log masuk

poetry run 能执行任何系统命令,只是它会在它要的虚拟环境中执行。所以可以想见,poetry 的项目要生成文档或覆盖率都必须用 poetry run ... 命令来支持 sphinx, coverage 或 flake8。

在 sample 目录(与 pyproject.toml 文件平级)中创建文件 my_module.py, 内容为

def main():
 print('hello poetry')
Salin selepas log masuk

然后在 pyproject.toml 中写上。

[tool.poetry.scripts]
my-script="sample.my_module:main"
Salin selepas log masuk

再执行

$ poetry run my-script
Salin selepas log masuk

就会输出 "hello poetry"。

通过对以上四个工具的认识,项目结构的复杂度由 cookiecutter-pyproject -> PyScaffold -> PyBuilder -> Poetry 依次降低,使用的难度大略也是相同的顺序

Atas ialah kandungan terperinci Empat alat pengurusan dan pembinaan projek Python, disyorkan untuk pengumpulan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Apr 08, 2025 pm 06:12 PM

Hadidb: Pangkalan data Python yang ringan, tinggi, Hadidb (Hadidb) adalah pangkalan data ringan yang ditulis dalam Python, dengan tahap skalabilitas yang tinggi. Pasang HadIdb menggunakan pemasangan PIP: Pengurusan Pengguna PipInstallHadidB Buat Pengguna: CreateUser () Kaedah untuk membuat pengguna baru. Kaedah pengesahan () mengesahkan identiti pengguna. dariHadidb.OperationImportuserer_Obj = user ("admin", "admin") user_obj.

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Rancangan Python 2 jam: Pendekatan yang realistik Rancangan Python 2 jam: Pendekatan yang realistik Apr 11, 2025 am 12:04 AM

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Apr 08, 2025 pm 06:03 PM

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Python: meneroka aplikasi utamanya Python: meneroka aplikasi utamanya Apr 10, 2025 am 09:41 AM

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Apr 09, 2025 pm 03:09 PM

Sebagai profesional data, anda perlu memproses sejumlah besar data dari pelbagai sumber. Ini boleh menimbulkan cabaran kepada pengurusan data dan analisis. Nasib baik, dua perkhidmatan AWS dapat membantu: AWS Glue dan Amazon Athena.

Cara memulakan pelayan dengan redis Cara memulakan pelayan dengan redis Apr 10, 2025 pm 08:12 PM

Langkah -langkah untuk memulakan pelayan Redis termasuk: Pasang Redis mengikut sistem operasi. Mulakan perkhidmatan Redis melalui Redis-server (Linux/macOS) atau redis-server.exe (Windows). Gunakan redis-cli ping (linux/macOS) atau redis-cli.exe ping (windows) perintah untuk memeriksa status perkhidmatan. Gunakan klien Redis, seperti redis-cli, python, atau node.js untuk mengakses pelayan.

Bolehkah mysql menyambung ke pelayan SQL Bolehkah mysql menyambung ke pelayan SQL Apr 08, 2025 pm 05:54 PM

Tidak, MySQL tidak dapat menyambung terus ke SQL Server. Tetapi anda boleh menggunakan kaedah berikut untuk melaksanakan interaksi data: Gunakan middleware: data eksport dari MySQL ke format pertengahan, dan kemudian mengimportnya ke SQL Server melalui middleware. Menggunakan Pangkalan Data Pangkalan Data: Alat perniagaan menyediakan antara muka yang lebih mesra dan ciri -ciri canggih, pada dasarnya masih dilaksanakan melalui middleware.

See all articles