Python kitabxanasını necə yaratmaq olar
ƏLAQƏ: @Shirinov039
DAHA ÇOXU ÜÇÜN: @ShirinovInfo
Pythonda öz kitabxananızı yaradın✨
İş yerindəki komandanız üçün və ya onlayn açıq mənbəli layihə üçün də olsa, heç Python kitabxanası yaratmaq istəmisiniz? Bu blogda necə edəcəyinizi öyrənəcəksiniz!
Eyni alətlərdən istifadə edərkən təlimatı izləmək ən asandır, lakin fərqli vasitələrdən istifadə etmək də mümkündür.
Bu dərslikdə istifadə olunan alətlər bunlardır:
- Linux komanda əmri
- Visual Studio Kodu
Addım 1: Kitabxananızı yerləşdirmək istədiyiniz qovluğu yaradınKomanda əmrinizi açın və Python kitabxananızı yaradacağınız qovluq yaradın.
Unutmayın:
- Onunla pwd
indiki iş kataloqunuzu görə bilərsiniz.
- ls
Siz kataloqunuzdakı qovluqları və faylları sadalaya bilərsiniz.
- Onunla cd <path>
mövcud olduğunuz cari qovluğu dəyişə bilərsiniz.
- Onun köməyi ilə mkdir <folder>
iş kataloqunuzda yeni qovluq yarada bilərsiniz.
Mənim vəziyyətimdə işləyəcəyim qovluq mypythonlibrary
. İndiki iş qovluğunu qovluğunuz olmaq üçün dəyişdirin.
Addım 2: Qovluqunuz üçün virtual mühit yaradınLayihənizə başladığınız zaman layihənizi əhatə etmək üçün virtual mühit yaratmaq həmişə yaxşı fikirdir. Virtual mühit müəyyən bir Python versiyasından və bəzi kitabxanalardan ibarətdir.
Virtual mühitlər sonradan asılılıq probleminin yaranmasının qarşısını alır. Məsələn, köhnə layihələrdə kitabxananın köhnə versiyaları ilə işləmiş ola bilərsiniz numpy
. Bir vaxtlar gözəl işləyən bəzi köhnə kodlar onun versiyasını yenilədikdən sonra işləməyi dayandıra bilər. Ola bilsin ki, hissələri numpy
proqramınızın digər hissələri ilə artıq uyğun gəlmir. Virtual mühitlərin yaradılması bunun qarşısını alır. Onlar həmçinin başqası ilə əməkdaşlıq etdiyiniz və tətbiqinizin onların kompüterində işlədiyinə və əksinə əmin olmaq istədiyiniz hallarda faydalıdır.
(Mövcud iş qovluğunu Python kitabxananızı yaratacağınız qovluğa dəyişdirdiyinizə əmin olun ( cd <path/to/folder>
).)
Davam edin və yazaraq virtual mühit yaradın:> python3 -m venv venv
Yaradıldıqdan sonra, indi aşağıdakılardan istifadə edərək mühiti aktivləşdirməlisiniz:> source venv/bin/activate
Virtual mühitin aktivləşdirilməsi PATH və qabıq dəyişənlərini sizin yaratdığınız xüsusi təcrid olunmuş Python quraşdırmasına işarə etmək üçün dəyişdirir. PATH Linux və digər Unix-ə bənzər əməliyyat sistemlərində istifadəçi tərəfindən verilən əmrlərə cavab olaraq icra edilə bilən faylları (yəni, işə salınmağa hazır proqramlar) hansı qovluqlarda axtarmaq lazım olduğunu bildirən ekoloji dəyişəndir. Əmr əmri əvvəldən ( ) yazmaqla hazırda hansı virtual mühitdə olduğunuzu göstərmək üçün dəyişəcək yourenvname
.
Ətrafınızda pip quraşdırıldığından əmin olun wheel
və setuptools
. twine
Python kitabxanamızı qurmaq üçün onlara daha sonra ehtiyacımız olacaq.> pip install wheel> pip install setuptools> pip install twine
Addım 3: Qovluq strukturu yaradınVisual Studio Kodunda qovluğu açın mypythonlibrary
(və ya qovluğunuza verdiyiniz hər hansı ad). Bu kimi bir şey görünməlidir:
İndi layihənizə qovluq və fayllar əlavə etməyə başlaya bilərsiniz. Bunu ya əmr sorğusu vasitəsilə, ya da Visual Studio Kodunun özündə edə bilərsiniz.
- adlı boş bir fayl yaradın
setup.py
. Bu, Python kitabxanası yaratarkən ən vacib fayllardan biridir! - adlı boş bir fayl yaradın
README.md
. Bu, kitabxananızın məzmununu digər istifadəçilər üçün təsvir etmək üçün qeyd yaza biləcəyiniz yerdir. - adlı qovluq yaradın
mypythonlib
və ya onu quraşdırdığınız zaman Python kitabxananızın çağırılmasını istədiyiniz hər hansı bir qovluq yaradın. (Əgər daha sonra dərc etmək istəyirsinizsə, ad pip-də unikal olmalıdır.) mypythonlib
İçində adlanan boş bir fayl yaradın__init__.py
. Əsasən, içərisində fayl olan hər hansı bir qovluq__init__.py
biz onu qurarkən kitabxanaya daxil ediləcək. Çox vaxt faylları__init__.py
boş qoya bilərsiniz. İdxal etdikdən sonra daxilindəki kod__init__.py
yerinə yetirilir, ona görə də layihənizi icra etmək üçün lazım olan minimum kod miqdarını ehtiva etməlidir. Hələlik onları olduğu kimi tərk edəcəyik.- Həmçinin, eyni qovluqda adlı bir fayl yaradın
myfunctions.py
. - Və nəhayət, kök qovluğunuzda testlər qovluğu yaradın. İçəridə boş bir
__init__.py
fayl və boş bir fayl yaradıntest_myfunctions.py
.
Quraşdırmanız indi bu kimi görünməlidir:
Addım 4: Kitabxananız üçün məzmun yaradın.Funksiyaları kitabxananıza yerləşdirmək üçün siz onları faylda yerləşdirə bilərsiniz myfunctions.py
. Məsələn, faylınızdakı haversine funksiyasını kopyalayın:
riyaziyyatdan idxal radyan, cos, sin, asin, sqrtdef haversine(lon1: float, lat1: float, lon2: float, lat2: float) -> float: "" " Yerdəki iki nöqtə arasındakı böyük dairə məsafəsini hesablayın (onluq dərəcə ilə göstərilir), məsafəni metrlə qaytarır . Bütün arqumentlər bərabər uzunluqda olmalıdır. :param lon1: birinci yerin uzunluğu :param lat1: birinci yerin eni :param lon2: ikinci yerin uzunluğu :param lat2: ikinci yerin eni :qayıt: iki koordinat dəsti arasında metrlə məsafə """ # Ondalığı çevir dərəcələrdən radianlara lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # Haversine formula dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # Yerin radiusu kilometrlərlə c * r qaytarın
Bu funksiya bizə iki enlik və uzunluq nöqtələri arasındakı məsafəni metrlərlə verəcəkdir.
Hər hansı bir kod yazdığınız zaman, bu kod üçün testlər də yazmağınız çox tövsiyə olunur. Python ilə test etmək üçün kitabxanalardan pytest
və pytest-runner
. Kitabxananı virtual mühitinizə quraşdırın:> pip install pytest==4.4.1> pip install pytest-runner==4.4
Haversin funksiyası üçün kiçik bir test yaradaq. Aşağıdakıları kopyalayın və faylın içərisinə qoyun test_myfunctions.py
:
mypythonlib-dən funksiyalarımı idxal edindef test_haversine(): assert myfunctions.haversine(52.370216, 4.895168, 52.520008, 13.404954) == 945793.4375088713
setup.py
Nəhayət, kitabxananı qurmağa kömək edəcək bir fayl yaradaq . Məhdud versiyası setup.py
belə görünəcək:
setuptools-dan find_packages idxal edin, quraşdırmaquraşdırma( ad='mypythonlib', paketlər=find_packages(), versiya='0.1.0', təsvir='İlk Python kitabxanam', müəllif='Mən', lisenziya='MIT', )
Quraşdırmadakı ad dəyişəni, paket çarxı faylınızın olmasını istədiyiniz hər hansı adı ehtiva edir. Bunu asanlaşdırmaq üçün ona qovluqla eyni adı verəcəyik.
Yaratmaq istədiyiniz paketləri təyin edinPrinsipcə find_packages()
heç bir arqument olmadan istifadə edə bilsəniz də, bu, potensial olaraq arzuolunmaz paketlərin daxil edilməsi ilə nəticələnə bilər. Bu, məsələn, kataloqunuza daxil etsəniz baş verə bilər __init__.py
( tests/
bizim bunu etdik). Alternativ olaraq, testlərin paketə daxil edilməsinin açıq şəkildə qarşısını almaq üçün istisna arqumentindən də istifadə edə bilərsiniz, lakin bu, bir qədər az etibarlıdır. Gəlin onu aşağıdakı kimi dəyişək:
setuptools-dan find_packages idxal edin, quraşdırmaquraşdırma( ad='mypythonlib', paketlər=find_paketləri(daxildir=['mypythonlib']), versiya='0.1.0', description='Mənim ilk Python kitabxanam', müəllif='Mən', lisenziya'MIT', )
Kitabxananızın ehtiyac duyduğu tələbləri təyin edinQeyd edək ki , layihəniz başqaları tərəfindən asılılıq kimi quraşdırıldıqda pip requirements.yml
/ istifadə etmir . Ümumiyyətlə, bunun üçün faylınızdakı və arqumentlərində requirements.txt
asılılıqları qeyd etməli olacaqsınız .install_requirestests_requiresetup.py
Install_requires
tamamilə lazım olan paketlərin siyahısı ilə məhdudlaşmalıdır. Bunun səbəbi, istifadəçiləri lazımsız paketlər quraşdırmağa məcbur etmək istəməməyinizdir. Həm də qeyd edin ki, standart Python kitabxanasının bir hissəsi olan paketləri sadalamağa ehtiyac yoxdur.
Bununla belə, biz indiyə qədər yalnız haversine funksiyasını təyin etdiyimizə və o, yalnız riyaziyyat kitabxanasından istifadə etdiyinə görə (bu həmişə Python-da mövcuddur), biz bu arqumenti boş qoya bilərik.
Ola bilsin ki, əvvəllər kitabxananı quraşdırdığımızı xatırlayasınız pytest
. pytest
Əlbəttə ki, siz asılılıqlarınıza əlavə etmək istəmirsiniz install_requires
: bu, paketinizin istifadəçiləri tərəfindən tələb olunmur. Yalnız testlər keçirdiyiniz zaman onun avtomatik quraşdırılması üçün aşağıdakıları əlavə edə bilərsiniz setup.py
:
setuptools-dan find_packages idxal edin, quraşdırmaquraşdırma( ad='mypythonlib', paketlər=find_paketləri(include=['mypythonlib']), version='0.1.0', description='Mənim ilk Python kitabxanam', müəllif='Mən', lisenziya='MIT', install_requires=[], setup_requires=['pytest-runner'], tests_require=['pytest==4.4.1'], test_suite='testlər', )
Çalışır: "testlər" qovluğunda saxlanılan bütün testləri yerinə yetirəcək.> python setup.py pytest
Addım 5: Kitabxananızı yaradınİndi bütün məzmun oradadır, biz kitabxanamızı qurmaq istəyirik. Hazırkı iş kataloqunuzun /path/to/mypythonlibrary
(layihənizin kök qovluğu) olduğundan əmin olun. Komanda sorğunuzda çalıştırın:> python setup.py bdist_wheel
Təkər faylınız indi yaradılmış “dist” qovluğunda saxlanılır. Kitabxananızı aşağıdakılardan istifadə etməklə quraşdıra bilərsiniz:> pip install /path/to/wheelfile.whl
Nəzərə alın ki, siz həmçinin kitabxananızı iş yerinizdəki intranetdəki daxili fayl sisteminə və ya rəsmi PyPI repozitoriyasına dərc edib oradan quraşdıra bilərsiniz.
Python kitabxananızı quraşdırdıqdan sonra onu aşağıdakılardan istifadə edərək idxal edə bilərsiniz:import mypythonlibfrom mypythonlib import myfunctions