ホームページ > バックエンド開発 > Python チュートリアル > 独自の Python プロジェクトを数分で作成する方法

独自の Python プロジェクトを数分で作成する方法

Barbara Streisand
リリース: 2024-12-29 08:58:10
オリジナル
975 人が閲覧しました

なぜ Python パッケージなのか?

Python はあらゆる種類の実行をサポートしています。 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 開発者になる場合は、通常は他のツールを使用します。

作成するコードごとに、次の手順を順番に実行します。

  1. Python コードをパッケージに書き込みます
  2. 変更を追跡
  3. 作成したすべてのコードをテストします
  4. コードをテストする環境に配置します
  5. コードをリモート リポジトリにプッシュします
  6. 配布用にパッケージをビルドします
  7. パッケージを PyPi にアップロードします

パイプライン

コードに変更を加えると、バグが発生する可能性があります。これを破棄するには、毎回正しい環境で独自のパッケージをテストする必要があります。

これを行うには、Python 自体ではなく、git、docker、make などのいくつかのツールが必要です。

ドキュメント、ライセンス、その他の一般的なファイル

単に Python パッケージを作成し、誰でもすぐに利用できるようにするだけでは十分ではありません。また、それを文書化する方法、他の人に簡単に説明する方法、ライセンスを取得する方法、プロジェクトに統合する方法を説明する方法についても考える必要があります。

これには、READMELICENSECODE_OF_CONDUCTCONTRIBUTING などのファイルを開発する必要があります。
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
ログイン後にコピー
ログイン後にコピー

結果は次のようになります:

How to create own Python project in inutes

パッケージの単体テストを実行する

今度は、テスト フォルダーを通じてパッケージの 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>"

ログイン後にコピー
ログイン後にコピー

結果は同じです:
How to create own Python project in inutes

makeでパイプラインを構築する

次の開発後、Makefile でパイプラインを使用できるようになります。

[test@ubuntu app] vim app/__main__.py
ログイン後にコピー

PyPiでパッケージを公開する

これで、必要に応じて、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート