سلام. من یه کد نوشتم میخوام تبدیلش کنم به کتابخانه پایتون که با دستور pip install نصب بشه. باید چیکار کنم؟
2 پاسخ ها
ساخت کتابخانه در پایتون
برای تبدیل کد خود به یک کتابخانه پایتون که با دستور pip install نصب بشه، شما باید چند مرحله را طی کنید:
• اول، شما باید یک پروژه پایتون با ساختار مناسب بسازید. شما باید یک دایرکتوری با نام کتابخانه خود ایجاد کنید و در آن یک دایرکتوری دیگر به نام src قرار دهید. در دایرکتوری src، شما باید یک دایرکتوری دیگر با نام کتابخانه خود ایجاد کنید و در آن فایلهای کد خود را قرار دهید. همچنین شما باید یک فایل خالی به نام init.py در دایرکتوری کتابخانه خود ایجاد کنید تا پایتون بتواند آن را به عنوان یک پکیج شناسایی کند. برای مثال، اگر نام کتابخانه شما mylibrary باشد، شما باید ساختار زیر را داشته باشید:
mylibrary/
-- src/
-- mylibrary/
-- __init__.py
-- your_code.py
• دوم، شما باید چند فایل مهم را برای توصیف و تنظیم کتابخانه خود ایجاد کنید. این فایلها عبارتند از:
• README.md: این فایل شامل توضیحات کتابخانه شما است که برای کاربران مفید است. شما باید در این فایل مواردی مانند هدف، نحوه نصب، نحوه استفاده، مثال ها، مجوز و ... را بنویسید. این فایل با فرمت MarkDown نوشته میشود.
• LICENSE: این فایل شامل متن مجوز کتابخانه شما است که برای حفظ حقوق شما و کاربران مهم است. شما باید یک مجوز مناسب برای کتابخانه خود انتخاب کنید و متن آن را در این فایل قرار دهید. برای مثال، میتوانید از مجوز MIT استفاده کنید که یک مجوز ساده و رایج است.
• pyproject.toml: این فایل شامل اطلاعاتی در مورد ابزارهایی است که برای ساخت و بسته بندی کتابخانه شما لازم است. شما باید در این فایل مشخص کنید که از چه ابزارهایی استفاده میکنید و چه وابستگی هایی دارند. برای مثال، میتوانید از ابزار setuptools و wheel استفاده کنید که ابزارهای رایجی برای ساخت و بسته بندی کتابخانه های پایتون هستند. برای این کار، شما باید محتوای زیر را در فایل pyproject.toml قرار دهید:
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"
• setup.cfg: این فایل شامل اطلاعاتی در مورد کتابخانه شما است که برای ابزارهای ساخت و بسته بندی لازم است. شما باید در این فایل مشخصات کتابخانه خود را مانند نام، نسخه، نویسنده، توضیحات، وابستگی ها و ... را بنویسید. برای مثال، میتوانید محتوای زیر را در فایل setup.cfg قرار دهید:
[metadata]
name = mylibrary
version = 1.0.0
author = Your Name
author_email = your.email@example.com
description = A short description of your library
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/your-username/mylibrary
classifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
[options]
package_dir =
= src
packages = find:
python_requires = >=3.6
[options.packages.find]
where = src
• سوم، شما باید کتابخانه خود را ساخته و بسته بندی کنید. برای این کار، شما باید ابزار build را نصب کنید و دستور زیر را در دایرکتوری اصلی پروژه خود اجرا کنید:
python3 -m pip install --upgrade build
python3 -m build
این دستور باعث میشود که یک دایرکتوری جدید به نام dist ایجاد شود و فایلهای بسته بندی شده کتابخانه شما در آن قرار گیرند.
• چهارم، شما باید کتابخانه خود را به مخزن پایتون آپلود کنید. برای این کار، شما باید یک حساب کاربری در سایت PyPIhttps://www.freecodecamp.org/news/how-to-create-and-upload-your-first-python-package-to-pypi/ ایجاد کنید و یک توکن API برای احراز هویت دریافت کنید. سپس شما باید ابزار twine را نصب کنید و دستور زیر را در دایرکتوری اصلی پروژه خود اجرا کنید:
python3 -m pip install --user --upgrade twine
python3 -m twine upload dist/*
این دستور باعث میشود که فایلهای بستهبندی شده کتابخانه شما به مخزن پایتون آپلود شوند و برای کاربران قابل دسترسی باشند.
اینها مراحل اصلی تبدیل کد شما به یک کتابخانه پایتون هستند.
درمورد فایل init
فایل init.py یک فایل ویژه پایتون است که برای نشان دادن اینکه یک دایرکتوری باید به عنوان یک پکیج پایتون در نظر گرفته شود، استفاده میشود. این فایل معمولا خالی است، اما میتوان از آن برای تنظیم یا پیکربندی پکیج یا تعیین متغیر all که کنترل میکند که چه نمادهایی وقتی کسی از دستور from package import * استفاده میکند، وارد شوند، استفاده کرد. در فایل init.py میتوان هر کد پایتونی را نوشت که در هر ماژول دیگری میتوان نوشت و پایتون هنگام وارد کردن پکیج، برخی ویژگیهای اضافی را به ماژول اضافه میکندhttps://stackoverflow.com/questions/448271/what-is-init-py-for.
در فایل init.py میتوان از چندین روش استفاده کرد. برخی از مثالهایی که میتوانید در فایل init.py انجام دهید، عبارتند از:
• میتوانید از فایل init.py برای تنظیم پکیج هنگامی که وارد میشود، استفاده کنید. برای مثال، میتوانید متغیرها را تعیین کنید یا کارهای مقدماتی دیگری را انجام دهید که برای کارکرد صحیح پکیج لازم هستند.
• میتوانید از فایل init.py برای تعیین اینکه چه نمادهایی باید وقتی کسی از دستور from package import * استفاده میکند، وارد شوند، استفاده کنید. این کار با تعیین متغیر all انجام میشود که یک لیست از رشته هایی است که نام نمادهایی را که باید وارد شوند، دارند.
• میتوانید از فایل init.py برای تعریف زیرماژولها یا زیرپکیج هایی در پکیج خود استفاده کنید. این کار با ایجاد زیردایرکتوریهایی در پکیج و قرار دادن فایلهای init.py در آنها انجام میشود. این کار به شما امکان میدهد پکیج خود را به واحدهای منطقی تقسیم کنید و استفاده و نگهداری آن را آسانتر کنید.
• میتوانید از فایل init.py برای تعریف API پکیج خود استفاده کنید که مجموعهای از توابع، کلاسها و نمادهای دیگری است که برای استفاده عمومی در نظر گرفته شدهاند. این کار میتواند به کاربران پکیج کمک کند تا بفهمند که چه چیزهایی برای آنها در دسترس است و چگونه از آنها استفاده کنند.
• میتوانید از فایل init.py برای تعریف قلابهای واردات سفارشی یا رفتارهای سفارشی دیگر برای پکیج خود استفاده کنید. این کار میتواند برای موارد پیشرفته مفید باشد، مانند پیاده سازی پشتیبانی از سینتکس ماژول جایگزین یا سفارشی سازی نحوه وارد کردن پکیج.
میتوانید از کتابخانه setuptools استفاده کنید
به یک دایرکتوری شامل فایل setup.py و فایل های init__.py__ نیاز دارید
pyexample ├── pyexample │ ├── __init__.py │ ├── module_mpi4py_1.py │ ├── module_numpy_1.py │ └── module_numpy_2.py └── setup.py
هر پوشه ای که لازم است بخشی از کتابخانه باشه فقط در صورتی به کتابخانه اضافه میشه که شامل فایل init__.py__ باشد
* فایل init__.py__ چیست؟ ..
انجام این کار به روش دستی خیلی سخت و زمان بر هست. به خصوص برای افرادی که تجربه کمی برای کار با پیاتون دارند. به نظر من استفاده از ابزارهایی مثل https://pyscaffold.org/en/stable/ روش بهتری هست.