Cipta dan Keluarkan Pakej Python Peribadi di GitHub

Linda Hamilton
Lepaskan: 2024-10-20 22:18:30
asal
983 orang telah melayarinya

pengenalan

Sebagai jurutera perisian, kami sering mendapati diri kami menggunakan semula kod merentas modul dan projek yang berbeza. Tetapi mari kita hadapi itu, pengulangan ini mencipta cabaran: apabila kita perlu melaraskan atau membetulkan kod itu, kita perlu membuat perubahan yang sama di beberapa tempat. Bagi kami yang menghargai kecekapan dan automasi, penyelesaiannya jelas - buat pakej berasingan yang boleh dipasang dan digunakan merentas projek kami.
Walau bagaimanapun, apabila berurusan dengan kod sulit, kami tidak boleh hanya menerbitkan pakej kami pada repositori awam seperti PyPI. Sebaliknya, kita perlu menggunakan ia ke repositori peribadi seperti GitHub atau GitLab. Pendekatan ini membolehkan kami mengekalkan keselamatan sambil masih mendapat manfaat daripada kemudahan pakej boleh guna semula.

Dalam tutorial ini, kami akan membimbing anda melalui proses:

  1. Mencipta pakej Python
  2. Menetapkan pakej ke repositori peribadi (GitHub)
  3. Memasang pakej dalam persekitaran maya (venv)

Dengan mengikuti langkah ini, anda akan dapat mengurangkan pertindihan kod dan memudahkan penyelenggaraan kod kongsi merentas projek anda.

Nota: DRY bukan sahaja bermaksud "Jangan Ulangi Diri Sendiri" - ia juga merupakan pilihan gaya hidup.

Create and Release a Private Python Package on GitHub

1. Sediakan Struktur Projek Anda

Pertama, mari kita sediakan struktur projek asas untuk pakej Python kami:

my-package/
├── my_package/
│   ├── __init__.py
│   └── module1.py
├── setup.py
├── build.pipeline.yml
├── requirements.txt
├── .gitignore
├── README.md
├── MANIFEST.in
└── LICENSE
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mari kita pecahkan anatomi pakej Python peribadi kami. Setiap fail dan direktori memainkan peranan penting dalam menjadikan pakej kami berfungsi dan boleh dipasang:

  • my-package/: Ini ialah direktori akar projek kami. Ia seperti sebuah rumah yang mengandungi semua bilik (fail) yang kita perlukan.
  • my_package/: Subdirektori ini adalah tempat tinggal kod Python sebenar. Ia dinamakan sama dengan pakej kami untuk kejelasan.
    • __init__.py: Fail ini menjadikan Python merawat direktori sebagai pakej. Ia boleh kosong atau boleh melaksanakan kod permulaan untuk pakej.
    • module1.py: Di sinilah kami meletakkan kod utama kami. Anda boleh mempunyai berbilang fail modul bergantung pada kerumitan pakej anda.
  • setup.py: Anggap ini sebagai manual arahan untuk pakej kami. Ia mengandungi metadata tentang pakej kami (seperti nama dan versinya) dan menyenaraikan kebergantungannya. Fail ini penting untuk menjadikan pakej kami boleh dipasang melalui pip.
  • requirements.txt: Fail ini menyenaraikan semua pakej Python luaran yang bergantung kepada projek kami. Ia seperti senarai beli-belah untuk pip, memberitahunya dengan tepat apa yang perlu dipasang untuk menjadikan pakej kami berfungsi.
  • README.md: Ini adalah tikar selamat datang projek kami. Ini biasanya perkara pertama yang dilihat orang apabila mereka melawat repositori GitHub kami, jadi kami menggunakannya untuk menerangkan perkara yang dilakukan oleh pakej kami, cara memasangnya dan cara menggunakannya.
  • .gitignore: Fail ini memberitahu Git fail atau direktori yang hendak diabaikan. Ia berguna untuk memastikan kod yang disusun, fail sementara atau maklumat sensitif di luar kawalan versi.
  • LESEN: Fail ini menentukan cara orang lain boleh menggunakan, mengubah suai atau mengedarkan pakej kami. Ini penting untuk projek sumber terbuka dan membantu melindungi kerja kami.
  • MANIFEST.in: Fail ini digunakan untuk memasukkan fail bukan Python dalam pengedaran pakej kami. Jika kami mempunyai fail data, dokumentasi atau sumber lain yang perlu disertakan, kami menyenaraikannya di sini.
  • build.pipeline.yml: Fail ini mentakrifkan saluran paip Integrasi Berterusan/Penggunaan Berterusan (CI/CD) kami. Ia mengautomasikan tugas seperti menjalankan ujian dan membina pakej apabila kami menolak perubahan pada repositori GitHub kami.

2. Mencipta Kod Pakej

Mari buat modul ringkas dalam pakej kami. Dalam 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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam my_package/__init__.py, kami akan mengimport modul kami:

class Hello:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Hello, {self.name}!"
Salin selepas log masuk
Salin selepas log masuk

3. Mencipta setup.py

Fail setup.py adalah penting untuk membungkus projek kami. Berikut ialah contoh asas:

from .module1 import Hello
Salin selepas log masuk
Salin selepas log masuk

4. Mencipta keperluan.txt

Dalam fail requirements.txt kami, kami menyertakan kebergantungan yang diperlukan untuk membina dan mengedarkan pakej kami:

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}",
    }
)
Salin selepas log masuk
Salin selepas log masuk

5. Membina dan Memasang Pakej Anda

Pasang keperluan. Untuk memastikan perkara mudah, kami akan menggunakan persekitaran maya Python.

setuptools==69.2.0
wheel
twine
Salin selepas log masuk

Untuk membina pakej kami:

python -m venv env
source env/bin/activate # for linux and mac
./env/Scripts/activate # for windows
pip install -r requirements.txt
Salin selepas log masuk

Untuk memasang pakej kami secara tempatan untuk ujian:

python setup.py sdist bdist_wheel
Salin selepas log masuk

Anda boleh melakukan kerja anda dan mengabaikan folder menggunakan fail .gitignore:

https://github.com/github/gitignore/blob/main/Python.gitignore

6. Menerbitkan Pakej di GitHub dengan tag

Untuk menerbitkan pakej, mula-mula buat fail build.pipeline.yml pada akar projek my-package/ dan lakukannya. Atur letak akan dilakukan dengan twine, pustaka yang kami pasang sebelum ini:

my-package/
├── my_package/
│   ├── __init__.py
│   └── module1.py
├── setup.py
├── build.pipeline.yml
├── requirements.txt
├── .gitignore
├── README.md
├── MANIFEST.in
└── LICENSE
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda perlu memasukkan fail bukan Python dengan pemasangan modul anda, anda boleh menggunakan fail MANIFEST.in. Fail ini menentukan fail tambahan yang harus disertakan dalam pengedaran pakej anda.

class Hello:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Hello, {self.name}!"
Salin selepas log masuk
Salin selepas log masuk

Kemudian muat naik pakej:

from .module1 import Hello
Salin selepas log masuk
Salin selepas log masuk

7. Pasang Pakej

Buat token akses:

  • Pergi ke Tetapan > Tetapan Pembangun > Token akses peribadi (klasik) > Jana token baharu.
  • Pastikan anda menyemak skop write:packages untuk memberikan kebenaran yang diperlukan.

Sebaik sahaja anda mempunyai token anda, pastikan ia selamat, kerana anda memerlukannya untuk memasang pakej anda.

Pada mesin anda, anda boleh memasang pakej peribadi anda menggunakan templat berikut:

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}",
    }
)
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Syabas, anda sekarang tahu cara mencipta dan menggunakan pakej peribadi anda sendiri dengan Python pada GitHub.

Pautan repositori Github : https://github.com/ABDELLAH-Hallou/Private-Python-Package-Deployment

Atas ialah kandungan terperinci Cipta dan Keluarkan Pakej Python Peribadi di GitHub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!