GitHub でプライベート Python パッケージを作成してリリースする
導入
私たちはソフトウェア エンジニアとして、さまざまなモジュールやプロジェクト間でコードを再利用していることによく気づきます。しかし、正直に言って、この繰り返しによって課題が生じます。コードを調整または修正する必要がある場合、複数の場所で同じ変更を加えなければなりません。効率と自動化を重視する人にとって、解決策は明らかです。それは、プロジェクト全体でインストールして使用できる別個のパッケージを作成することです。
ただし、機密コードを扱う場合、パッケージを PyPI などのパブリック リポジトリに単純に公開することはできません。代わりに、GitHub や GitLab などのプライベート リポジトリにデプロイする必要があります。このアプローチにより、再利用可能なパッケージの利便性を活用しながら、セキュリティを維持することができます。
このチュートリアルでは、次のプロセスについて説明します。
- Python パッケージの作成
- プライベート リポジトリ (GitHub) へのパッケージのデプロイ
- 仮想環境 (venv) へのパッケージのインストール
これらの手順に従うことで、コードの重複を減らし、プロジェクト全体での共有コードのメンテナンスを簡素化することができます。
注: DRY は単に「同じことを繰り返さない」の略ではなく、ライフスタイルの選択でもあります。
1. プロジェクト構造のセットアップ
まず、Python パッケージの基本的なプロジェクト構造を設定しましょう。
my-package/ ├── my_package/ │ ├── __init__.py │ └── module1.py ├── setup.py ├── build.pipeline.yml ├── requirements.txt ├── .gitignore ├── README.md ├── MANIFEST.in └── LICENSE
プライベート Python パッケージの構造を詳しく見てみましょう。各ファイルとディレクトリは、パッケージを機能させてインストール可能にする上で重要な役割を果たします。
- my-package/: これはプロジェクトのルート ディレクトリです。それは、必要なすべての部屋 (ファイル) が含まれる家のようなものです。
-
my_package/: このサブディレクトリには、実際の Python コードが存在します。わかりやすくするために、パッケージと同じ名前が付けられています。
- __init__.py: このファイルにより、Python はディレクトリをパッケージとして扱います。空にすることも、パッケージの初期化コードを実行することもできます。
- module1.py: ここにメインコードを置きます。パッケージの複雑さに応じて、複数のモジュール ファイルを使用できます。
- setup.py: これはパッケージの取扱説明書と考えてください。これには、パッケージに関するメタデータ (名前やバージョンなど) が含まれており、その依存関係がリストされています。このファイルは、パッケージを pip 経由でインストールできるようにするために不可欠です。
- requirements.txt: このファイルには、プロジェクトが依存するすべての外部 Python パッケージがリストされます。これは pip の買い物リストのようなもので、パッケージを機能させるために何をインストールするかを正確に指示します。
- README.md: これは私たちのプロジェクトのウェルカムマットです。これは通常、ユーザーが GitHub リポジトリにアクセスしたときに最初に目にするものであるため、パッケージの機能、インストール方法、使用方法を説明するために使用します。
- .gitignore: このファイルは、Git にどのファイルまたはディレクトリを無視するかを指示します。これは、コンパイルされたコード、一時ファイル、または機密情報をバージョン管理の対象外に保つのに便利です。
- ライセンス: このファイルは、他の人がパッケージを使用、変更、配布する方法を指定します。これはオープンソース プロジェクトにとって非常に重要であり、私たちの作品を保護するのに役立ちます。
- MANIFEST.in: このファイルは、パッケージ配布に Python 以外のファイルを含めるために使用されます。含める必要のあるデータ ファイル、ドキュメント、またはその他のリソースがある場合は、ここにリストします。
- build.pipeline.yml: このファイルは、継続的インテグレーション/継続的デプロイメント (CI/CD) パイプラインを定義します。 GitHub リポジトリに変更をプッシュするときに、テストの実行やパッケージのビルドなどのタスクを自動化します。
2. パッケージコードの作成
パッケージ内に簡単なモジュールを作成しましょう。 my_package/module1.py 内:
my-package/ ├── my_package/ │ ├── __init__.py │ └── module1.py ├── setup.py ├── build.pipeline.yml ├── requirements.txt ├── .gitignore ├── README.md ├── MANIFEST.in └── LICENSE
my_package/__init__.py で、モジュールをインポートします。
class Hello: def __init__(self, name): self.name = name def greet(self): return f"Hello, {self.name}!"
3. setup.pyの作成
setup.py ファイルはプロジェクトをパッケージ化するために重要です。基本的な例を次に示します:
from .module1 import Hello
4.requirements.txtの作成
requirements.txt ファイルには、パッケージの構築と配布に必要な依存関係が含まれています。
from setuptools import setup, find_packages with open('requirements.txt') as f: requirements = f.read().splitlines() setup( name="my_package", version="0.1", include_package_data=True, python_requires='>=3.8', packages=find_packages(), setup_requires=['setuptools-git-versioning'], install_requires=requirements, author="Abdellah HALLOU", author_email="abdeallahhallou33@gmail.com", description="A short description of your package", long_description=open('README.md').read(), long_description_content_type="text/markdown", classifiers=[ "Programming Language :: Python :: 3.8", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], version_config={ "dirty_template": "{tag}", } )
5. パッケージのビルドとインストール
要件をインストールします。話を簡単にするために、Python 仮想環境を使用します。
setuptools==69.2.0 wheel twine
パッケージをビルドするには:
python -m venv env source env/bin/activate # for linux and mac ./env/Scripts/activate # for windows pip install -r requirements.txt
テストのためにパッケージをローカルにインストールするには:
python setup.py sdist bdist_wheel
.gitignore ファイルを使用すると、作業をコミットしてフォルダーを無視できます:
https://github.com/github/gitignore/blob/main/Python.gitignore
6. タグを使用してパッケージを GitHub に公開します
パッケージを公開するには、まず、プロジェクト my-package/ のルートに build.pipeline.yml ファイルを作成し、コミットします。デプロイメントは、以前にインストールしたライブラリであるtwineを使用して行われます。
my-package/ ├── my_package/ │ ├── __init__.py │ └── module1.py ├── setup.py ├── build.pipeline.yml ├── requirements.txt ├── .gitignore ├── README.md ├── MANIFEST.in └── LICENSE
モジュールのインストールに Python 以外のファイルを含める必要がある場合は、MANIFEST.in ファイルを使用できます。このファイルは、パッケージ配布にどの追加ファイルを含める必要があるかを指定します。
class Hello: def __init__(self, name): self.name = name def greet(self): return f"Hello, {self.name}!"
次に、パッケージをアップロードします:
from .module1 import Hello
7. パッケージをインストールします
アクセストークンを作成します:
- [設定] > [設定] に移動します。開発者設定 > 個人アクセス トークン (クラシック) > 新しいトークンを生成します.
- write:packages スコープを確認して、必要な権限を付与してください。
トークンを取得したら、パッケージをインストールするために必要となるため、安全に保管してください。
次のテンプレートを使用して、マシンにプライベート パッケージをインストールできます:
from setuptools import setup, find_packages with open('requirements.txt') as f: requirements = f.read().splitlines() setup( name="my_package", version="0.1", include_package_data=True, python_requires='>=3.8', packages=find_packages(), setup_requires=['setuptools-git-versioning'], install_requires=requirements, author="Abdellah HALLOU", author_email="abdeallahhallou33@gmail.com", description="A short description of your package", long_description=open('README.md').read(), long_description_content_type="text/markdown", classifiers=[ "Programming Language :: Python :: 3.8", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], version_config={ "dirty_template": "{tag}", } )
結論
よくわかりました。GitHub で Python を使用して独自のプライベート パッケージを作成してデプロイする方法がわかりました。
Github リポジトリのリンク: https://github.com/ABDELLAH-Hallou/Private-Python-Package-Deployment
以上がGitHub でプライベート Python パッケージを作成してリリースするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。
