Python menyokong semua jenis pelaksanaan; anda boleh menjalankan kod Python terus ke dalam shell, atau meletakkan kod anda ke dalam fail dan jalankan kemudian.
Kadangkala untuk memulakan projek Python baharu adalah sangat sukar; Tulis skrip? Tulis modul? Tulis pakej?
Pilihan terbaik ialah corak micropiecies: tulis skrip, jadi tulis semula itu dalam modul dan tulis semula dalam pakej.
Corak ini membenarkan anda untuk tidak mencipta semula roda setiap hari dan anda menggunakan semula kod itu pada masa hadapan.
Python pakej mempunyai struktur ini:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
Folder pkg ialah pakej, kerana mengandungi modul __init__.py. Juga folder subpkg ialah pakej; ialah subpakej pkg.
module1.py dan module2.py ialah modul pakej mereka.
Modul __main__.py membenarkan pelaksanaan pakej.
Jika anda akan menjadi pembangun Python, maka anda biasanya menggunakan alatan lain.
Secara tertib, anda mengikut langkah ini setiap keping kod yang anda tulis:
Setiap perubahan dalam kod anda, mungkin memperkenalkan pepijat yang mungkin. Untuk membuang ini, setiap kali kita memerlukan ujian pakej sendiri dalam persekitaran yang betul.
Untuk melakukan ini, beberapa alatan diperlukan ke atas Python itu sendiri, seperti git, docker dan make.
Tidak cukup dengan hanya mencipta pakej Python dan menjadikannya tersedia dengan segera kepada semua orang. Anda juga perlu memikirkan cara mendokumentasikannya, menerangkannya secara ringkas kepada orang lain, melesenkannya dan menerangkan cara menyepadukan ke dalam projek.
Ini memerlukan membangunkan fail seperti README, LESEN, KOD_KELAKUAN dan MEMBUMBANG.
Mungkin menambah CHANGELOG untuk menyimpan dan meminta orang lain menjejaki perubahan yang dibuat pada setiap versi.
Untuk merealisasikan semua bahagian projek Python, berfungsi beberapa jam atau hari.
Tetapi wujud alat untuk tujuan ini: psp.
Selepas kami mengikuti arahan pemasangan:
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
jalankan:
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
Sekarang, semak projek Python yang telah dibuat:
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
Mula bangunkan pakej yang telah dibuat oleh arahan psp untuk projek kami.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
Sekarang, import fungsi hello_world kami ke dalam fail __main__.py:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
Anda telah menulis pakej yang ringkas, tetapi teratur dan berkuasa yang sedia untuk pengeluaran dan pengedaran.
Uji pakej kami.
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
Dan hasilnya ialah:
Kini menguji juga kod Python pada pakej, melalui folder ujian:
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
Kini anda boleh menyimpan pembangunan apl web anda.
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
Simulasikan dengan docker persekitaran pengeluaran anda:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
Dan hasilnya adalah sama:
Kini, selepas pembangunan seterusnya, anda boleh menggunakan saluran paip dengan Makefile:
[test@ubuntu app] vim app/__main__.py
Sekarang, jika anda mahu, anda sudah bersedia untuk menerbitkan pakej Python anda di PyPi:
#! /usr/bin/env python3 # -*- encoding: utf-8 -*- # vim: se ts=4 et syn=python: # Generated by psp (https://github.com/MatteoGuadrini/psp) from .__init__ import __version__ print(f'app {__version__}') from .core import app app.run(debug=True)
Dalam masa kurang dari lima minit, anda telah mencipta projek Python di mana pembangunan pakej itu sendiri adalah satu-satunya perkara yang anda perlu risaukan.
Alat yang digunakan pada artikel ini:
psp: repositori -- dokumen
git: repositori -- docs
docker: repositori -- docs
buat: repositori -- dokumen
python: repositori -- docs
Atas ialah kandungan terperinci Bagaimana untuk membuat projek Python sendiri dalam inutes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!