導入
私たちはソフトウェア エンジニアとして、さまざまなモジュールやプロジェクト間でコードを再利用していることによく気づきます。しかし、正直に言って、この繰り返しによって課題が生じます。コードを調整または修正する必要がある場合、複数の場所で同じ変更を加えなければなりません。効率と自動化を重視する人にとって、解決策は明らかです。それは、プロジェクト全体でインストールして使用できる別個のパッケージを作成することです。
ただし、機密コードを扱う場合、パッケージを 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 サイトの他の関連記事を参照してください。

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

この記事では、コマンドラインインターフェイス(CLI)の構築に関するPython開発者をガイドします。 Typer、Click、Argparseなどのライブラリを使用して、入力/出力の処理を強調し、CLIの使いやすさを改善するためのユーザーフレンドリーな設計パターンを促進することを詳述しています。

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック



