කරුණාකර setup.pyඑය වින්යාසගත කරන්නේ කෙසේද සහ භාවිතා කරන්නේ කෙසේද යන්න පැහැදිලි කිරීමට කිසිවෙකුට හැකිද ?
කරුණාකර setup.pyඑය වින්යාසගත කරන්නේ කෙසේද සහ භාවිතා කරන්නේ කෙසේද යන්න පැහැදිලි කිරීමට කිසිවෙකුට හැකිද ?
Answers:
setup.py පයිතන් ගොනුවක් වන අතර, සාමාන්යයෙන් ඔබ ස්ථාපනය කිරීමට යන මොඩියුලය / පැකේජය ඇසුරුම් කර බෙදා හරිනු ලැබුවේ ඩිස්ටියුටිල්ස් සමඟ වන අතර එය පයිතන් මොඩියුල බෙදා හැරීමේ ප්රමිතිය වේ.
පයිතන් පැකේජ පහසුවෙන් ස්ථාපනය කිරීමට මෙය ඔබට ඉඩ සලසයි. බොහෝ විට එය ලිවීමට ප්රමාණවත්ය:
$ pip install . pipඔබගේ මොඩියුලය ස්ථාපනය කිරීමට setup.py භාවිතා කරයි. setup.pyකෙලින්ම ඇමතීමෙන් වළකින්න .
https://docs.python.org/3/installing/index.html#installing-index
setup.py.
                    එය fooඔබගේ යන්ත්රය මත පයිතන් පැකේජයක් ස්ථාපනය කිරීමට උපකාරී වේ (එසේම විය හැක virtualenv) එවිට ඔබට fooවෙනත් ව්යාපෘති වලින් සහ [I] පයිතන් විමසීම් වලින් පැකේජය ආනයනය කළ හැකිය .  
එය සමාන රැකියා කරන්නේ pip, easy_installආදිය,
භාවිතා කිරීම setup.py  
සමහර අර්ථ දැක්වීම් සමඟ ආරම්භ කරමු:
පැකේජය - __init__.pyගොනුව අඩංගු ෆෝල්ඩරයක් / නාමාවලියකි . 
මොඩියුලය   - .pyදිගුවක් සහිත වලංගු පයිතන් ගොනුවක් . 
බෙදා හැරීම - එක් පැකේජයක් අනෙක් පැකේජ හා මොඩියුල සමඟ සම්බන්ධ වන්නේ කෙසේද .  
ඔබට නම් කළ පැකේජයක් ස්ථාපනය කිරීමට අවශ්ය යැයි කියමු foo. එහෙනම් ඔබ,  
$ git clone https://github.com/user/foo  
$ cd foo
$ python setup.py installඒ වෙනුවට, ඔබට එය සැබවින්ම ස්ථාපනය කිරීමට අවශ්ය නැති නමුත් එය භාවිතා කිරීමට කැමති නම්. එහෙනම් කරන්න,
$ python setup.py develop  මෙම විධානය මඟින් දේවල් පිටපත් කරනවා වෙනුවට අඩවි පැකේජ තුළ ඇති ප්රභව නාමාවලියට සමමුහුර්ත නිර්මාණය කරනු ඇත. මේ නිසා, එය තරමක් වේගවත් (විශේෂයෙන් විශාල පැකේජ සඳහා).
නිර්මාණය කිරීම setup.py  
ඔබේ ඇසුරුම් ගස වැනි නම්,
foo
├── foo
│   ├── data_struct.py
│   ├── __init__.py
│   └── internals.py
├── README
├── requirements.txt
└── setup.pyඉන්පසුව, ඔබ පහත සඳහන් දෑ ඔබේ කරන්න setup.py ස්ක්රිප්ටයේ එමඟින් එය කිසියම් යන්ත්රයක ස්ථාපනය කළ හැකිය:  
from setuptools import setup
setup(
   name='foo',
   version='1.0',
   description='A useful module',
   author='Man Foo',
   author_email='foomail@foo.com',
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
)ඒ වෙනුවට, ඔබේ ඇසුරුම් ගස පහත දැක්වෙන ආකාරයට වඩා සංකීර්ණ නම්:
foo
├── foo
│   ├── data_struct.py
│   ├── __init__.py
│   └── internals.py
├── README
├── requirements.txt
├── scripts
│   ├── cool
│   └── skype
└── setup.pyඑවිට, setup.pyමෙම අවස්ථාවේ දී ඔබ මෙසේ වනු ඇත:
from setuptools import setup
setup(
   name='foo',
   version='1.0',
   description='A useful module',
   author='Man Foo',
   author_email='foomail@foo.com',
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
   scripts=[
            'scripts/cool',
            'scripts/skype',
           ]
)( setup.py) වෙත තවත් දේවල් එකතු කර එය යහපත් කරන්න:
from setuptools import setup
with open("README", 'r') as f:
    long_description = f.read()
setup(
   name='foo',
   version='1.0',
   description='A useful module',
   license="MIT",
   long_description=long_description,
   author='Man Foo',
   author_email='foomail@foo.com',
   url="http://www.foopackage.com/",
   packages=['foo'],  #same as name
   install_requires=['bar', 'greek'], #external packages as dependencies
   scripts=[
            'scripts/cool',
            'scripts/skype',
           ]
)මෙම long_descriptionභාවිතා වේ pypi.org ඔබගේ ඇසුරුම් README විස්තරයක් ලෙස.  
අවසාන වශයෙන්, ඔබ දැන් ඔබේ පැකේජය PyPi.org වෙත උඩුගත කිරීමට සූදානම්ය අතර එමඟින් අනෙක් අයට ඔබේ පැකේජය ස්ථාපනය කරගත හැකිය pip install yourpackage.  
පළමු පියවර වන්නේ ඔබේ පැකේජයේ නම සහ අවකාශය පයිපි වලින් ලබා ගැනීමයි:
$ python setup.py registerඔබගේ පැකේජයේ නම ලියාපදිංචි වූ පසු, කිසිවෙකුට එය ඉල්ලා සිටීමට හෝ භාවිතා කිරීමට නොහැකිය. සාර්ථක ලියාපදිංචියෙන් පසු, ඔබේ පැකේජය එහි (වලාකුළට) උඩුගත කළ යුතුය,
$ python setup.py uploadවිකල්පයක් ලෙස, ඔබට ඔබේ පැකේජය GPGමගින් අත්සන් කළ හැකිය ,
$ python setup.py --sign uploadපාරිතෝෂිකය : setup.pyසැබෑ ව්යාපෘතියක නියැදියක් මෙතැනින් බලන්න:torchvision-setup.py
requests) සුවිශේෂව setup.py හොඳ උදාහරණයක් දෙන්න මෙම ව්යාපෘතිය ඇත - github.com/kennethreitz/setup.py
                    requirements.txtගොනු හා iterable පිරවිය, කියන්න requirementsමේ iterable හා අනුයුක්ත requirementsකිරීමට install_requires.   උදාහරණයක් සඳහා කරුණාකර මෙම පිටුව setup.py needs.txt බලන්න.
                    python setyp.py install --user
                    setup.pyයනු බහු වේදිකා ස්ථාපකයකට සහ makeගොනුවකට පයිතන්ගේ පිළිතුරයි .
විධාන රේඛා ස්ථාපනයන් ගැන ඔබ හුරුපුරුදු නම්, make && make installපරිවර්තනය කරයි python setup.py build && python setup.py install.
සමහර පැකේජ පිරිසිදු පයිතන් වන අතර ඒවා සම්පාදනය කරනු ලබන්නේ බයිට් පමණි. තවත් සමහරක් ස්වදේශීය කේත අඩංගු විය හැකිය, ඒ සඳහා ස්වදේශීය සම්පාදකයෙකු (වැනි gccහෝ cl) සහ පයිතන් අතුරුමුහුණත් මොඩියුලයක් (වැනි swigහෝ pyrex) අවශ්ය වේ.
python setup.py install ඇත්ත වශයෙන්ම python setup.py buildපළමුව ධාවනය වේ (එබැවින් විශේෂිත අවස්ථාවන්හිදී මිස ඔබට ඒවා වෙන වෙනම ධාවනය කිරීමට අවශ්ය නොවේ). makeධාවනය වීමට පෙර සෑම විටම අතින් ධාවනය කළ යුතු යැයි මම විශ්වාස කරමි make install.
                    makeනිශ්චිත පරාමිතීන් (හෝ ඇණවුම් කිරීම) අවශ්ය නොවේ: එය Makefile“ඉලක්ක” ලබා ගත හැකි (සහ ඒවා ක්රියාත්මක කළ යුතු අනුපිළිවෙලෙහි) නිර්මාතෘගේ වගකීම වේ. හිස් Makefiles (සාමාන්යයෙන්) එතරම් අතේ ගෙන යා නොහැකි බැවින් ඒවා ජනනය කිරීමට නැඹුරු වන්නේ (ඔටෝටූල්ස්) ./configureහෝ cmake .(cmake) වැනි විධානයන් භාවිතා කරමිනි. එම නිසා ඔබ පැහැදිලිවම ක්රියාත්මක makeවීමට පෙර make installහෝ නොකිරීමට අවශ්යද යන්න නිර්වචනය කිරීම මෙම වැඩසටහන් වලට අනුකූල වේ.
                    ඔබ root ෆෝල්ඩරයේ "setup.py" ඇති පැකේජයක් බාගත කර ඇත්නම්, ධාවනය කිරීමෙන් ඔබට එය ස්ථාපනය කළ හැකිය
python setup.py installඔබ ව්යාපෘතියක් සංවර්ධනය කරන්නේ නම් සහ මෙම ගොනුව ප්රයෝජනවත් වන්නේ කුමක් දැයි කල්පනා කරන්නේ නම්, සැකසුම් ස්ක්රිප්ට් ලිවීම පිළිබඳ පයිතන් ප්රලේඛනය පරීක්ෂා කරන්න
setup.pyසාමාන්යයෙන් පුස්තකාල හෝ වැඩසටහන් සමඟ නැව්ගත කර ඇති පයිතන් පිටපතකි. එහි අරමුණ මෘදුකාංගය නිවැරදිව ස්ථාපනය කිරීමයි.
බොහෝ පැකේජ distutilsසමඟ රාමුව භාවිතා කරයි setup.py.
setup.py අවස්ථා දෙකකින් භාවිතා කළ හැකිය, පළමුව ඔබට පයිතන් පැකේජයක් ස්ථාපනය කිරීමට අවශ්යය. දෙවනුව, ඔබට ඔබේම පයිතන් පැකේජයක් සෑදීමට අවශ්යය. සාමාන්යයෙන් සම්මත පයිතන් පැකේජයට setup.py, setup.cfg සහ Manifest.in වැනි වැදගත් ලිපිගොනු කිහිපයක් ඇත. ඔබ පයිතන් පැකේජය නිර්මාණය කරන විට, මෙම ලිපිගොනු තුන (බිත්තර තොරතුරු ෆෝල්ඩරය යටතේ PKG-INFO හි අන්තර්ගතය) නම, අනුවාදය, විස්තරය, අවශ්ය අනෙකුත් ස්ථාපනයන් (සාමාන්යයෙන් .txt ගොනුවේ) සහ තවත් පරාමිතීන් කිහිපයක් තීරණය කරයි. setup.cfg කියවන්නේ setup.py මගින් වන අතර පැකේජය නිර්මාණය වේ (tar.gz විය හැකිය). Manifest.in යනු ඔබේ පැකේජයට ඇතුළත් කළ යුතු දේ නිර්වචනය කළ හැකි ස්ථානයකි. කෙසේ වෙතත් ඔබට setup.py වැනි දේවල් භාවිතා කළ හැකිය
python setup.py build
python setup.py install
python setup.py sdist <distname> upload [-r urltorepo]  (to upload package to pypi or local repo)Setup.py සමඟ භාවිතා කළ හැකි වෙනත් විධාන පොකුරක් ඇත. උදව් සඳහා
python setup.py --help-commandspython setup.py --help-commands. Setup.py හාරන විට ඉතා ප්රයෝජනවත් වේ.
                    setup.pyවෙනත් ඕනෑම එකක් මෙන් පයිතන් ගොනුවකි. setup.pyඑක් එක් ස්ක්රිප්ටය සමඟ වෙනස් ක්රියා පටිපාටියක් නොපවතින ලෙස සම්මුතියෙන් නම් කර ඇති බැවින් හැර එයට ඕනෑම නමක් ගත හැකිය .
setup.pyපයිතන් මොඩියුලයක් ස්ථාපනය කිරීමට බොහෝ විට භාවිතා වන නමුත් සේවාදායකයේ වෙනත් අරමුණු:
මොඩියුල:
සමහර විට මෙය වඩාත් ප්රචලිත setup.pyවන්නේ මොඩියුලවල ය. ඒවා භාවිතයෙන් ස්ථාපනය කළ හැකි වුවද pip, පැරණි පයිතන් අනුවාදයන් pipපෙරනිමියෙන් ඇතුළත් නොවූ අතර ඒවා වෙන වෙනම ස්ථාපනය කිරීමට අවශ්ය විය.  
ඔබට මොඩියුලයක් ස්ථාපනය කිරීමට අවශ්ය නමුත් ස්ථාපනය කිරීමට අවශ්ය නොවන්නේ නම් pip, එකම විකල්පය වූයේ setup.pyගොනුවෙන් මොඩියුලය ස්ථාපනය කිරීමයි . මෙය සාක්ෂාත් කරගත හැකිය python setup.py install. මෙය පයිතන් මොඩියුලය මූල ශබ්ද කෝෂයට ස්ථාපනය කරයි (නොමැතිව pip, easy_installect).
pipඅසමත් වන විට මෙම ක්රමය බොහෝ විට භාවිතා වේ. උදාහරණයක් ලෙස අපේක්ෂිත පැකේජයේ නිවැරදි පයිතන් අනුවාදය pipතවදුරටත් නඩත්තු නොකිරීම නිසා ලබා ගත නොහැකි python setup.py installනම්, සම්පාදනය කරන ලද ද්විමය අවශ්යතා හැර, ප්රභවය බාගත කර ධාවනය කිරීම එකම දේ කරයි, (නමුත් එය නොසලකා හරිනු ඇත පයිතන් අනුවාදය - දෝෂයක් නොමැති නම්).
තවත් භාවිතයක් setup.pyවන්නේ ප්රභවයෙන් පැකේජයක් ස්ථාපනය කිරීමයි. මොඩියුලයක් තවමත් සංවර්ධනය වෙමින් පවතී නම් රෝද ලිපිගොනු ලබා ගත නොහැකි අතර ස්ථාපනය කිරීමට ඇති එකම ක්රමය ප්රභවයෙන් කෙලින්ම ස්ථාපනය කිරීමයි.
පයිතන් දිගු ගොඩනැගීම:
මොඩියුලයක් ගොඩනගා ඇති විට එය ඩිස්ටියුටිල්ස් සැකසුම් ස්ක්රිප්ට් භාවිතයෙන් බෙදා හැරීමට සූදානම් මොඩියුලයක් බවට පරිවර්තනය කළ හැකිය . ඉහත විධානය භාවිතයෙන් මේවා ස්ථාපනය කළ හැකිය.
සැකසුම් ස්ක්රිප්ටයක් සෑදීම පහසු වන අතර ගොනුව නිසියාකාරව වින්යාස කර ඇති අතර එය ධාවනය කිරීමෙන් සම්පාදනය කළ හැකිය python setup.py build(සියලුම විධාන සඳහා සබැඳිය බලන්න).
නැවත වරක් එය නම් setup.pyකර ඇත්තේ භාවිතයේ පහසුව සහ සම්මුතිය අනුව ය, නමුත් ඕනෑම නමක් ගත හැකිය.
සයිතන්:
setup.pyලිපිගොනු භාවිතා කරන තවත් ප්රසිද්ධ භාවිතයක් වන්නේ සම්පාදනය කරන ලද දිගු කිරීමයි. මේවාට පරිශීලක අර්ථ දක්වන ලද අගයන් සහිත සැකසුම් ස්ක්රිප්ට් අවශ්ය වේ. ඒවා වේගයෙන් (නමුත් සම්පාදනය කළ පසු වේදිකාව මත රඳා පවතී) ක්රියාත්මක කිරීමට ඉඩ දෙයි. ප්රලේඛනයෙන් සරල උදාහරණයක් මෙන්න :
from distutils.core import setup
from Cython.Build import cythonize
setup(
    name = 'Hello world app',
    ext_modules = cythonize("hello.pyx"),
)මෙය හරහා සම්පාදනය කළ හැකිය python setup.py build
Cx_Freeze:
සැකසුම් ස්ක්රිප්ටයක් අවශ්ය තවත් මොඩියුලයකි cx_Freeze. මෙය පයිතන් ස්ක්රිප්ට් ක්රියාත්මක කළ හැකි බවට පරිවර්තනය කරයි. විස්තර, නම්, අයිකන, පැකේජ වැනි බොහෝ විධානයන් ඇතුළත් කිරීමට, ect බැහැර කිරීමට සහ ධාවනය කිරීමෙන් පසු බෙදා හැරිය හැකි යෙදුමක් නිපදවනු ඇත. ප්රලේඛනයෙන් උදාහරණයක් :
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 
base = None
if sys.platform == "win32":
    base = "Win32GUI"
setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options},
        executables = [Executable("guifoo.py", base=base)])මෙය හරහා සම්පාදනය කළ හැකිය python setup.py build.
ඉතින් setup.pyගොනුවක් යනු කුමක්ද?
ඉතා සරළව එය පයිතන් පරිසරය තුළ යමක් ගොඩනඟන හෝ වින්යාස කරන පිටපතකි.
බෙදා හරින විට පැකේජයක අඩංගු විය යුත්තේ එක් සැකසුම් ස්ක්රිප්ට් එකක් පමණි, නමුත් කිහිපයක් එකම සැකසුම් ස්ක්රිප්ටයකට ඒකාබද්ධ කිරීම සාමාන්ය දෙයක් නොවේ. මෙය බොහෝ විට සම්බන්ධ වන බව සැලකිල්ලට ගන්නdistutils නමුත් සැමවිටම නොවන බව සැලකිල්ලට ගන්න (මම මගේ අවසාන උදාහරණයේ පෙන්වා ඇති පරිදි). එය මතක තබා ගත යුතු දෙය පයිතන් පැකේජය / ස්ක්රිප්ට් යම් ආකාරයකින් වින්යාස කරයි.
එය නම ගන්නා බැවින් එකම විධානය සෑම විටම ගොඩනැගීමේදී හෝ ස්ථාපනය කිරීමේදී භාවිතා කළ හැකිය.
ඔබ setup.pyඔබේ පර්යන්තය (මැක්, ලිනක්ස්) හෝ විධාන විමසුම (වින්ඩෝස්) විවෘත කර පැකේජයක් බාගත කරන විට . cd  ටැබ් බොත්තම භාවිතයෙන් ඔබට උදව් කිරීම ඔබ ගොනුව බාගත කළ ෆෝල්ඩරයට සහ එහි ඇති ස්ථානයට නිවැරදි මාර්ගය සකසන්න setup.py:
iMac:~ user $ cd path/pakagefolderwithsetupfile/Enter ඔබන්න, ඔබ මේ වගේ දෙයක් දැකිය යුතුයි:
iMac:pakagefolderwithsetupfile user$ඉන්පසු ටයිප් කරන්න python setup.py install:
iMac:pakagefolderwithsetupfile user$ python setup.py installඔබන්න enter. කළා!
ඔබ බාගත කළ පයිතන් පැකේජයක් ස්ථාපනය කිරීම සඳහා, ඔබ සංරක්ෂිතය උපුටා ගෙන ඇතුළත setup.py ස්ක්රිප්ට් ධාවනය කරන්න:
python setup.py installමට නම් මෙය සැමවිටම අමුතු දෙයක් ලෙස හැඟී ඇත. බාගත කිරීමේදී පැකේජ කළමණාකරුවෙකු යොමු කිරීම වඩාත් ස්වාභාවිකය, රූබී සහ නෝඩෙජ් හි මෙන්, උදා.gem install rails-4.1.1.gem
පැකේජ කළමනාකරුවෙකු ද වඩාත් සුවපහසු ය, මන්ද එය හුරුපුරුදු සහ විශ්වාසදායක ය. අනෙක් අතට, සෑම එකක්ම setup.pyනව එකක් වන්නේ එය පැකේජයට විශේෂිත බැවිනි. එය සම්මුතිය කෙරෙහි විශ්වාසය ඉල්ලා සිටී "මෙම setup.py මා අතීතයේ භාවිතා කළ අනෙක් විධානයන් හා සමාන විධානයන් ගනී". එය මානසික අධිෂ් on ානය මත කණගාටුදායක බද්දකි.
Setup.py වැඩ ප්රවාහය පැකේජ කළමණාකරුවෙකුට වඩා අඩු ආරක්ෂිත යැයි මම නොකියමි (මට තේරෙනවා Pip යනු setup.py ඇතුළත ක්රියාත්මක වන බව), නමුත් නිසැකවම එය අමුතු හා ජරා බව මට හැඟේ. සියල්ලම එකම පැකේජ කළමණාකරු යෙදුමකට අණ කිරීමට එකඟතාවයක් ඇත. ඔබ එයට ඇලුම් කිරීමට පවා ඉඩ තිබේ.
එය සරල කිරීම සඳහා, setup.py ක්රියාත්මක "__main__"වන්නේ ඔබ ස්ථාපනය කරන විට වෙනත් පිළිතුරු සඳහන් කර ඇති ආකාරයටය . Setup.py ඇතුලත, ඔබේ පැකේජය ස්ථාපනය කිරීමට අවශ්ය සියල්ල තැබිය යුතුය.
බොහෝ setup.py මොඩියුලයන් සතුව ඇති කරුණු දෙකක් පහත කොටස් දෙකෙන් සාකච්ඡා කෙරේ.
මෙම ශ්රිතය මඟින් ව්යාපෘතියේ නම, අනුවාදය වැනි ව්යාපෘති ගුණාංග නියම කිරීමට ඔබට ඉඩ සලසයි .... වඩාත්ම වැදගත් දෙය නම්, මෙම ශ්රිතය වෙනත් කාර්යයන් නිසි ලෙස ඇසුරුම් කර ඇත්නම් ඒවා ස්ථාපනය කිරීමට ඔබට ඉඩ සලසයි. බලන්න මෙම වෙබ් පිටුව setuptools.setup පිළිබඳ නිදසුනක්
 
පැකේජ මේ ආකාරයේ ස්ථාපනය සක්රීය setuptools.setup මෙවැනි ගුණාංග:
ඔබේ ව්යාපෘතියට ආනයනය කරන ලද සහ setuptools.findpackages භාවිතා කරමින් PyPI හි ලැයිස්තුගත කර ඇති පැකේජ :
packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])
පැකේජ නොවන PyPI , නමුත් භාවිතා URL එකක් බාගත කර ගත හැකි ය dependency_links
dependency_links=["http://peak.telecommunity.com/snapshots/",]
පරමාදර්ශී ලෝකයක, setuptools.setupඔබ වෙනුවෙන් සෑම දෙයක්ම හසුරුවනු ඇත. අවාසනාවට මෙය සැමවිටම එසේ නොවේ. සමහර විට ඔබ උපසිරැසි විධානය සමඟ පරායත්තයන් ස්ථාපනය කිරීම වැනි විශේෂිත දේ කළ යුතු අතර, ඔබ ස්ථාපනය කරන පද්ධතිය ඔබේ පැකේජය සඳහා නිවැරදි තත්වයට ගෙන ඒමට. මෙය වළක්වා ගැනීමට උත්සාහ කරන්න, මෙම කාර්යයන් ව්යාකූල වන අතර බොහෝ විට මෙහෙයුම් පද්ධතිය සහ පවා වෙනස් වේ බෙදා හැරීම .