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

forhandlinglaredataSetsinpython、usenumpyArrays forbetterperformance.1)numpyarraysarememory-effictientandfasterfornumericaloperations.2)nusinnnnedarytypeconversions.3)レバレッジベクトル化は、測定済みのマネージメーシェイメージーウェイズデイタイです

inpython、listsusedynamicmemoryallocation with allocation、whilenumpyArraysalocatefixedmemory.1)listsallocatemorememorythanneededededinitivative.2)numpyArrayasallocateexactmemoryforements、rededicablebutlessflexibilityを提供します。

inpython、youcanspecthedatatypeyfelemeremodelernspant.1)usenpynernrump.1)usenpynerp.dloatp.ploatm64、フォーマーpreciscontrolatatypes。

numpyisessentialfornumericalcomputinginpythonduetoitsspeed、memory efficiency、andcomprehensivematicalfunctions.1)それは、performsoperations.2)numpyArraysaremoremory-efficientthanpythonlists.3)Itofderangeofmathematicaloperty

contiguousMemoryAllocationisucial forArraysは、ForeffienceAndfastelementAccess.1)iteenablesConstantTimeAccess、O(1)、DuetodirectAddresscalculation.2)itemprovesefficiencyByAllowingMultiblementFechesperCacheLine.3)itimplifieMememm

slicingapythonlistisdoneusingtheyntaxlist [start:stop:step] .hore'showitworks:1)startisthe indexofthefirstelementtoinclude.2)spotisthe indexofthefirmenttoeexclude.3)staptistheincrementbetbetinelements

numpyallows forvariousoperationsonarrays:1)basicarithmeticlikeaddition、減算、乗算、および分割; 2)AdvancedperationssuchasmatrixMultiplication;

Arraysinpython、特にnumpyandpandas、aresentialfordataanalysis、offeringspeedandeficiency.1)numpyarraysenable numpyarraysenable handling forlaredatasents andcomplexoperationslikemoverages.2)Pandasextendsnumpy'scapabivitieswithdataframesfortruc


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

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

ホットトピック









