Heim >Backend-Entwicklung >Python-Tutorial >Erstellen und veröffentlichen Sie ein privates Python-Paket auf GitHub
Als Softwareentwickler verwenden wir häufig Code über verschiedene Module und Projekte hinweg wieder. Aber seien wir ehrlich, diese Wiederholung stellt eine Herausforderung dar: Wenn wir diesen Code anpassen oder reparieren müssen, müssen wir an mehreren Stellen dieselben Änderungen vornehmen. Für diejenigen unter uns, die Wert auf Effizienz und Automatisierung legen, ist die Lösung klar: Erstellen Sie ein separates Paket, das in unseren Projekten installiert und verwendet werden kann.
Wenn es jedoch um vertraulichen Code geht, können wir unser Paket nicht einfach in öffentlichen Repositories wie PyPI veröffentlichen. Stattdessen müssen wir es in einem privaten Repository wie GitHub oder GitLab bereitstellen. Dieser Ansatz ermöglicht es uns, die Sicherheit aufrechtzuerhalten und gleichzeitig vom Komfort einer wiederverwendbaren Verpackung zu profitieren.
In diesem Tutorial führen wir Sie durch den folgenden Prozess:
Wenn Sie diese Schritte befolgen, können Sie die Codeduplizierung reduzieren und die Wartung des gemeinsam genutzten Codes in Ihren Projekten vereinfachen.
Hinweis: DRY steht nicht nur für „Don't Repeat Yourself“ – es ist auch eine Wahl des Lebensstils.
Lassen Sie uns zunächst eine grundlegende Projektstruktur für unser Python-Paket einrichten:
my-package/ ├── my_package/ │ ├── __init__.py │ └── module1.py ├── setup.py ├── build.pipeline.yml ├── requirements.txt ├── .gitignore ├── README.md ├── MANIFEST.in └── LICENSE
Lassen Sie uns die Anatomie unseres privaten Python-Pakets aufschlüsseln. Jede Datei und jedes Verzeichnis spielt eine entscheidende Rolle dabei, unser Paket funktionsfähig und installierbar zu machen:
Lassen Sie uns ein einfaches Modul in unserem Paket erstellen. In 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
In my_package/__init__.py importieren wir unser Modul:
class Hello: def __init__(self, name): self.name = name def greet(self): return f"Hello, {self.name}!"
Die Datei setup.py ist für die Verpackung unseres Projekts von entscheidender Bedeutung. Hier ist ein einfaches Beispiel:
from .module1 import Hello
In unsere Datei „requirements.txt“ fügen wir die notwendigen Abhängigkeiten zum Erstellen und Verteilen unseres Pakets ein:
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}", } )
Installieren Sie die Anforderungen. Der Einfachheit halber verwenden wir die virtuelle Python-Umgebung.
setuptools==69.2.0 wheel twine
So erstellen Sie unser Paket:
python -m venv env source env/bin/activate # for linux and mac ./env/Scripts/activate # for windows pip install -r requirements.txt
So installieren Sie unser Paket zum Testen lokal:
python setup.py sdist bdist_wheel
Sie können Ihre Arbeit festschreiben und die Ordner mithilfe der .gitignore-Datei ignorieren:
https://github.com/github/gitignore/blob/main/Python.gitignore
Um das Paket zu veröffentlichen, erstellen Sie zunächst eine build.pipeline.yml-Datei im Stammverzeichnis des Projekts my-package/ und schreiben Sie sie fest. Die Bereitstellung erfolgt mit „twine“, der Bibliothek, die wir zuvor installiert haben:
my-package/ ├── my_package/ │ ├── __init__.py │ └── module1.py ├── setup.py ├── build.pipeline.yml ├── requirements.txt ├── .gitignore ├── README.md ├── MANIFEST.in └── LICENSE
Wenn Sie Nicht-Python-Dateien in Ihre Modulinstallation einbinden müssen, können Sie eine MANIFEST.in-Datei verwenden. Diese Datei gibt an, welche zusätzlichen Dateien in Ihrer Paketverteilung enthalten sein sollen.
class Hello: def __init__(self, name): self.name = name def greet(self): return f"Hello, {self.name}!"
Dann laden Sie das Paket hoch:
from .module1 import Hello
Erstellen Sie ein Zugriffstoken:
Sobald Sie Ihr Token haben, bewahren Sie es sicher auf, da Sie es für die Installation Ihres Pakets benötigen.
Auf Ihrem Computer können Sie Ihr privates Paket mithilfe der folgenden Vorlage installieren:
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}", } )
Gut gemacht, Sie wissen jetzt, wie Sie Ihre eigenen privaten Pakete mit Python auf GitHub erstellen und bereitstellen.
Github-Repository-Link: https://github.com/ABDELLAH-Hallou/Private-Python-Package-Deployment
Das obige ist der detaillierte Inhalt vonErstellen und veröffentlichen Sie ein privates Python-Paket auf GitHub. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!