Python はあらゆる種類の実行をサポートしています。 Python コードをシェルで直接実行することも、コードをファイルに入れて後で実行することもできます。
新しい Python プロジェクトを開始するのは非常に難しい場合があります。脚本を書きますか?モジュールを書きますか?パッケージを書きますか?
最良の選択は、マイクロピース パターンです。スクリプトを作成し、それをモジュール内で書き直し、パッケージ内で書き直します。
このパターンでは、毎日車輪の再発明をする必要がなく、将来的にコードを再利用できます。
Python パッケージには次の構造があります:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
フォルダー pkg は、__init__.py モジュールが含まれているため、パッケージです。また、フォルダー subpkg もパッケージです。 pkg のサブパッケージです。
module1.py と module2.py は、それらのパッケージのモジュールです。
__main__.py モジュールはパッケージの実行を許可します。
Python 開発者になる場合は、通常は他のツールを使用します。
作成するコードごとに、次の手順を順番に実行します。
コードに変更を加えると、バグが発生する可能性があります。これを破棄するには、毎回正しい環境で独自のパッケージをテストする必要があります。
これを行うには、Python 自体ではなく、git、docker、make などのいくつかのツールが必要です。
単に Python パッケージを作成し、誰でもすぐに利用できるようにするだけでは十分ではありません。また、それを文書化する方法、他の人に簡単に説明する方法、ライセンスを取得する方法、プロジェクトに統合する方法を説明する方法についても考える必要があります。
これには、README、LICENSE、CODE_OF_CONDUCT、CONTRIBUTING などのファイルを開発する必要があります。
CHANGELOG を追加して、各バージョンに加えられた変更を保存し、他の人が追跡できるようにすることもできます。
Python プロジェクトのすべての部分を実現するには、数時間または数日かかります。
しかし、この目的のためのツール、psp が存在します。
インストール手順に従った後:
[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
実行します:
[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
次に、作成された Python プロジェクトを確認します。
[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
psp コマンドがプロジェクト用に作成したパッケージの開発を開始します。
[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>"
次に、hello_world 関数を __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
これで、すぐに実稼働および配布できる、シンプルだが組織化された強力なパッケージを作成できました。
パッケージをテストします。
[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
結果は次のようになります:
今度は、テスト フォルダーを通じてパッケージの Python コードもテストします。
[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
これで、Web アプリの開発を保存できるようになりました。
[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
Docker を使用して本番環境をシミュレートします:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
結果は同じです:
次の開発後、Makefile でパイプラインを使用できるようになります。
[test@ubuntu app] vim app/__main__.py
これで、必要に応じて、Python パッケージを 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)
5 分もかからずに Python プロジェクトが作成されました。心配する必要があるのはパッケージ自体の開発だけです。
この記事で使用したツール:
psp: リポジトリ -- ドキュメント
git: リポジトリ -- ドキュメント
docker: リポジトリ -- docs
make: リポジトリ -- ドキュメント
Python: リポジトリ -- ドキュメント
以上が独自の Python プロジェクトを数分で作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。