Venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv යනාදිය අතර වෙනස කුමක්ද?


1106

පයිතන් 3.3 එහි සම්මත පුස්තකාලයේ නව පැකේජය ඇතුළත් venvවේ. එය කරන්නේ කුමක්ද, සහ රීජෙක්ස් වලට ගැලපෙන අනෙක් සියලුම පැකේජ වලින් එය වෙනස් වන්නේ (py)?(v|virtual|pip)?envකෙසේද?


25
සමීප ඡන්දය වළක්වා ගැනීම සඳහා, මෙය stackoverflow.com/questions/29950300/… ට වඩා සාමාන්‍ය ප්‍රශ්නයක් යැයි මට හැඟුණි , එබැවින් එම ප්‍රශ්නය සංස්කරණය කිරීමට හෝ එම තනතුරේ ඕනෑවට වඩා සාමාන්‍ය පිළිතුරක් පළ කිරීමට මට පහසු නොවීය.
Flimm

13
: මෙම මාර්ගෝපදේශය ප්රයෝජනවත් සහ පිඹුරා මෙයට වඩා "එක සහ එකම එක පැහැදිලි මාර්ගය" දේවල් එකතු කිරීමට අඛණ්ඩව නිරන්තරයෙන් යාවත්කාලීන දෙකම වේ docs.python-guide.org/en/latest/dev/virtualenvs
michael

2
3.6 වන විට මැකෝස් හි පයින්ව් හා සැසඳීමේදී වර්චුවලෙන්ව් වැඩ කිරීම පහසු බව මට පෙනී ගියේය (මම පයිනූබ්)
හැෂ්රොකට්සින්ටැක්ස්

AshHashRocketSyntax virtualenvසහ pyenvඑකම ශ්‍රිතයක් සිදු නොකරන අතර එකිනෙකාට විකල්ප නොවේ. මගේ පිළිතුර බලන්න.
Flimm

7
මම මුළු දවසම පයිපෙන්ව් සමඟ කාලය නාස්ති කළා. බොටම් ලයින්, එය අධික ලෙස සලකුණු කර ඇත. ඔබට py2 අවශ්‍ය නම් Venv සහ virtualenv නිසි මෙවලම් වේ. කොන්ඩා (මිනිකොන්ඩාව ඔබට සම්පූර්ණ තොගය අවශ්‍ය නොවේ නම්) ද ඉතා හොඳයි. ඉතා හොඳ ලිවීම: chriswarrick.com/blog/2018/07/17/…
SwimBikeRun

Answers:


1475

පයිපී පැකේජ සම්මත පුස්තකාලයේ නොමැත:

  • virtualenvපයිතන් පුස්තකාල සඳහා හුදකලා පයිතන් පරිසරයක් නිර්මාණය කරන ඉතා ජනප්‍රිය මෙවලමකි. ඔබ මෙම මෙවලම ගැන හුරුපුරුදු නැතිනම්, එය ඉතා ප්‍රයෝජනවත් මෙවලමක් වන බැවින් එය ඉගෙන ගැනීමට මම තරයේ නිර්දේශ කරමි. මෙම පිළිතුරේ ඉතිරි කොටස සඳහා මම එය සංසන්දනය කරමි.

    එය ක්‍රියාත්මක වන්නේ ඩිරෙක්ටරියක් තුළ ගොනු පොකුරක් ස්ථාපනය කිරීමෙනි (උදා env/:) PATHපරිසර විචල්‍යය එය අභිරුචි binනාමාවලියක් සමඟ උපසර්ග කිරීම සඳහා වෙනස් කිරීම (උදා :) env/bin/. ද්විමය pythonහෝ python3ද්විමය පිටපතක් මෙම නාමාවලියෙහි තැන්පත් කර ඇත, නමුත් පයිතන් එහි මාර්ගයට සාපේක්ෂව පුස්තකාල සෙවීම සඳහා ක්‍රමලේඛනය කර ඇත්තේ පරිසර නාමාවලියෙහි ය. එය පයිතන්ගේ සම්මත පුස්තකාලයේ කොටසක් නොව, PyPA (Python Packaging Authority) විසින් නිල වශයෙන් ආශිර්වාද කරනු ලැබේ. සක්‍රිය කිරීමෙන් පසු, ඔබට අථත්‍ය පරිසරය තුළ ඇසුරුම් ස්ථාපනය කළ හැකිය pip.

  • pyenvපයිතන් අනුවාද හුදකලා කිරීමට භාවිතා කරයි. උදාහරණයක් ලෙස, ඔබට පයිතන් 2.7, 3.6, 3.7 සහ 3.8 ට එරෙහිව ඔබේ කේතය පරීක්ෂා කිරීමට අවශ්‍ය විය හැකිය, එබැවින් ඔබට ඒවා අතර මාරු වීමට ක්‍රමයක් අවශ්‍ය වේ. සක්‍රිය කිරීමෙන් පසු, එය පයිතන් විධාන ( , ) හා ගැලපෙන විශේෂ ලිපිගොනු ඇති PATHපරිසර විචල්‍යය සමඟ උපසර්ග කරයි . මේවා පයිතන් නැව්ගත කළ විධානවල පිටපත් නොවේ; ඒවා පරිසර විචල්‍යය, හෝ ගොනුව හෝ ගොනුව මත පදනම්ව ධාවනය කළ යුතු පයිතන්ගේ අනුවාදය තීරණය කරන විශේෂ ස්ක්‍රිප්ට් වේ. විධානය භාවිතා කරමින් බහු පයිතන් අනුවාද බාගත කර ස්ථාපනය කිරීමේ ක්‍රියාවලිය පහසු කරයි .~/.pyenv/shimspythonpipPYENV_VERSION.python-version~/.pyenv/versionpyenvpyenv install

  • pyenv-virtualenvසඳහා ප්ලගිනය pyenvලෙස එකම කතුවරයා විසින් pyenvඔබ භාවිතා කිරීමට ඉඩ, pyenvසහ virtualenvපහසුවෙන් එම අවස්ථාවේ දී. කෙසේ වෙතත්, ඔබ පයිතන් 3.3 හෝ ඊට පසු භාවිතා කරන්නේ නම්, ඒ වෙනුවට එය තිබේ නම් pyenv-virtualenvධාවනය කිරීමට උත්සාහ කරනු ඇත . ඔබට භාවිතා කළ හැකි හා නැති එකට ඔබ පහසු විශේෂාංග ඕන නෑ නම්,.python -m venvvirtualenvvirtualenvpyenvpyenv-virtualenv

  • virtualenvwrapperසඳහා වන දිගු කට්ටලයකි virtualenv( ලියකියවිලි බලන්න ). එය ඔබ වැනි විධාන ලබා දෙයි mkvirtualenv, lssitepackages, හා විශේෂයෙන් workonවිවිධ අතර මාරු කිරීම සඳහා virtualenvනාමාවලි. ඔබට බහු virtualenvබහලුම් අවශ්‍ය නම් මෙම මෙවලම විශේෂයෙන් ප්‍රයෝජනවත් වේ .

  • pyenv-virtualenvwrapperpyenvඑකම කතුවරයා විසින් pyenvපහසුවෙන් ඒකාබද්ධ virtualenvwrapperකිරීම සඳහා වන ප්ලගිනයකි pyenv.

  • pipenvඒකාබද්ධ කිරීමට අරමුනු Pipfile, pipසහ virtualenvඑම විධාන රේඛාව මත එක විධාන බවට. මෙම virtualenvබහලුම සාමාන්යයෙන් තබා ලක්වෙයි ~/.local/share/virtualenvs/XXXසමග, XXXමෙම ව්යාපෘතිය බහලුමේ මාර්ගය පිළිබඳ හැෂ් වීම. මෙය virtualenvවර්තමාන වැඩ කරන නාමාවලියෙහි සාමාන්‍යයෙන් නාමාවලිය පවතින තැනට වඩා වෙනස් වේ . pipenvපයිතන් යෙදුම් (පුස්තකාලවලට වඩා වෙනස්ව) සංවර්ධනය කිරීමේදී භාවිතා කිරීමට අදහස් කෙරේ. වැනි විකල්ප ඇත pipenv, poetryමම මෙහි ලැයිස්තුගත නොකරන්නේ මෙම ප්‍රශ්නය සමාන ලෙස නම් කර ඇති පැකේජ ගැන පමණක් වන බැවිනි.

සම්මත පුස්තකාලය:

  • pyvenvයනු පයිතන් 3 සමඟ නැව්ගත කර ඇති නමුත් එය ගැටළු ඇති බැවින් පයිතන් 3.6 හි ඉවත් කර ඇත (ව්‍යාකූල නම සඳහන් නොකල යුතුය). පයිතන් 3.6+ හි හරියටම සමාන වේ python3 -m venv.

  • venvපයිතන් 3 සමඟ නැව්ගත කර ඇති පැකේජයකි, එය ඔබට භාවිතයෙන් ධාවනය කළ හැකිය python3 -m venv(යම් හේතුවක් නිසා සමහර ඩිස්ට්‍රෝස් එය python3-venvඋබුන්ටු / ඩේබියන් වැනි වෙනම ඩිස්ට්‍රෝ පැකේජයකට වෙන් කරයි ). එය එකම අරමුණක් ඉටු කරයි virtualenv, නමුත් එහි ලක්ෂණවල උප කුලකයක් පමණක් ඇත ( මෙහි සංසන්දනයක් බලන්න ). විශේෂයෙන්ම පයිතන් 2 සහ 3 යන දෙකටම සහය දක්වන බැවින්, virtualenvවඩා ජනප්‍රිය වෙමින් පවතී venv.

ආරම්භකයින් සඳහා නිර්දේශය:

ආරම්භකයින් සඳහා මෙය මගේ පුද්ගලික නිර්දේශයයි: ඉගෙනීමෙන් ආරම්භ කරන්න , virtualenvසහ pipපයිතන් 2 සහ 3 යන දෙකින්ම සහ විවිධ තත්වයන් යටතේ ක්‍රියා කරන මෙවලම්, ඔබට අවශ්‍ය වූ විට වෙනත් මෙවලම් ගන්න.


129
මෙය ඉතා ප්‍රයෝජනවත් වේ! 1 වෙනුවට 1 ගැටගැසුණු දේවල් 8 ක් ඇත්තේ ඇයි? (“එකක් තිබිය යුතු අතර එය කළ හැකි එකම ක්‍රමය තිබිය යුතුය.” - පයිතන්හි සෙන්)
ජෙරී 101

65
@ ජෙරී 101, venv හඳුන්වාදීම අර්ධ වශයෙන් එම අවුලට ප්‍රතිචාරයකි. ඔබට තත්වය වැඩිදියුණු කිරීමට උදව් කිරීමට අවශ්‍ය නම්, මම ඔබට යෝජනා කරන්නේ venv භාවිතා කර අනෙක් අයද එසේ කිරීමට දිරිමත් කරන්න.
මැග්නස් ලින්ඩ් ඔක්ස්ලන්ඩ්

34
"venv හඳුන්වාදීම එම අවුලට ප්‍රතිචාරයකි" 'X වැනි දෙයක්' කරන බොහෝ දේ ඇති විට, මිනිසුන් නිතරම සිතන්නේ 'X වැනි දෙයක්' කරන වෙනත් දෙයක් කිරීමෙන් එම අවුල වැඩි දියුණු කළ හැකි බවයි. . ඇත්තෙන්ම එය විහිලුවක්. අපි දැන් අවුරුදු 4 කට පසුව ... එසේ නම් විමසීමට අදාළ විය හැකිය, venvඇත්ත වශයෙන්ම එම ගැටලුව විසඳූවාද?
ක්‍රිස්

38
එකම භූමි ප්‍රදේශය සැබවින්ම ආවරණය වන එකම මෙවලම් දෙක වන්නේ virtualenv සහ venv ය, එබැවින් තරඟකාරී මෙවලම් කිහිපයක් නිසා ඇති වන අවුලක් සමඟ අප කටයුතු කරන ආකාරය ඉතා නිවැරදි නොවේ. කෙසේ වෙතත්, ලැයිස්තුවට සමාන ශබ්ද නාම සහිත අථත්ය පරිසරය හා සම්බන්ධ මෙවලම් කිහිපයකින් සමන්විත වේ. එය අවුල් සහගත විය හැකිය, විශේෂයෙන් ඔවුන් ගැන ඉගෙන ගන්නා පරිශීලකයින්ට. Vvenv තත්වය වැඩිදියුණු කළාද? එය වෙනත් අථත්ය පරිසර මෙවලම් වලට වඩා සැහැල්ලු බර විකල්පයක් ලබා දුන් අතර, ස්වදේශීය වෙනස් කිරීම් සහ සම්මත පුස්තකාලයේ ස්ථානයක් ලබා ගත්තේය. …
මැග්නස් ලින්ඩ් ඔක්ස්ලන්ඩ්

11
owcowbert පයිතන් 3.5 සිට පයිතන් 3.6 දක්වා උත්ශ්‍රේණිගත කිරීමෙන් පසුව සහ මගේ සියලු ගුණාංග බිඳී ගිය පසු, venvනව පයිතන් අනුවාදයකට වඩා පහසුවෙන් යාවත්කාලීන කිරීමට ඔබට ඉඩ සලසයි.
ඩැනියෙල් එච්

305

මම virtualenvපයිතන් 3.3 + ට පසුව භාවිතා කිරීමෙන් වැළකී සාමාන්‍ය නැව්ගත කළ පුස්තකාලය භාවිතා කරමි venv. නව අථත්‍ය පරිසරයක් නිර්මාණය කිරීම සඳහා ඔබ ටයිප් කරන්නේ:

$ python3 -m venv <MYVENV>  

virtualenvපයිතන් ද්විමය අථත්‍ය පරිසරයේ බින් නාමාවලියට පිටපත් කිරීමට උත්සාහ කරයි. කෙසේ වෙතත් එය එම ද්විමය තුළට ඇතුළත් කර ඇති පුස්තකාල ගොනු සබැඳි යාවත්කාලීන නොකරයි, එබැවින් ඔබ ප්‍රභව මාර්ගයෙන් පයිතන් සාපේක්ෂ මාර්ග නාම සහිත පද්ධති නොවන නාමාවලියක් බවට පත් කරන්නේ නම්, පයිතන් ද්විමය බිඳ වැටේ. පිටපතක් බෙදා හැරිය හැකි පයිතන් ඔබ සාදන ආකාරය මෙය බැවින් එය විශාල දෝෂයකි. OS X හි කාවැද්දූ පුස්තකාල ගොනු සම්බන්ධතා පරීක්ෂා කිරීමට BTW, භාවිතා කරන්න otool. උදාහරණයක් ලෙස ඔබේ අථත්‍ය පරිසරය තුළ සිට ටයිප් කරන්න:

$ otool -L bin/python
python:
    @executable_path/../Python (compatibility version 3.4.0, current version 3.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)

එහි ප්රතිඵලයක් මම වලකින virtualenvwrapperහා pipenv. pyvenvඅතහැර දමා ඇත. pyenvඑහිදී බොහෝ විට භාවිතා කළ බව පෙනේ virtualenvභාවිතා නමුත් මම මම හිතන්නේ සිට ද එය ඉවත් වෙලා ඉන්න බව venvද වන්නේ කුමක් pyenvසඳහා ඉදිකර ඇත.

venvපරිශීලක ස්ථාපනය කළ හැකි පුස්තකාල සහිත නැවුම් සහ වැලිපිල්ල සහිත කවචයේ අථත්‍ය පරිසරයන් නිර්මාණය කරන අතර එය බහු-පයිතන් ආරක්ෂිත වේ. නැවුම් නිසා අථත්ය පරිසරයන් ආරම්භ වන්නේ පයිතන් සමඟ නැව්ගත කරන සම්මත පුස්තකාල වලින් පමණක් වන අතර, අථත්ය පරිසරය සක්රීයව තිබියදී නැවත වෙනත් පුස්තකාල ස්ථාපනය කළ යුතුය . සැන්ඩ්බොක්ස් කර ඇත්තේ මෙම නව පුස්තකාල ස්ථාපනයන් කිසිවක් අථත්‍ය පරිසරයෙන් පිටත නොපෙනෙන නිසා ඔබට ඔබේ මුළු පරිසරයම මකා දමා ඔබේ මූලික පයිතන් ස්ථාපනය කෙරෙහි බලපෑම් කිරීම ගැන කරදර නොවී නැවත ආරම්භ කළ හැකිය. අථත්ය පරිසරයේ ඉලක්ක ෆෝල්ඩරය නොමැතිව නිර්මාණය කර ඇති නිසා පරිශීලක ස්ථාපනය කළ හැකි පුස්තකාලpip installsudoඔබ දැනටමත් සතුව ඇති සමහර නාමාවලියක sudoපුස්තකාල ස්ථාපනය කිරීමට ඔබට අවසර අවශ්‍ය නොවේ . අවසාන වශයෙන් එය බහු-පයිතන් ආරක්ෂිත වේ , මන්ද අථත්‍ය පරිසරය සක්‍රිය වන විට, කවචය දකින්නේ එම අථත්‍ය පරිසරය ගොඩනැගීම සඳහා භාවිතා කළ පයිතන් අනුවාදය (3.4, 3.5 යනාදිය) පමණි.

pyenvඑය සමාන venvවන්නේ එය ඔබට විවිධ පයිතන් පරිසරයන් කළමනාකරණය කිරීමට ඉඩ සලසයි. කෙසේ වෙතත් pyenvඔබ සමඟ පුස්තකාලය කිසියම් ආරම්භක තත්වයකට පහසුවෙන් පෙරළා ගත නොහැකි අතර පුස්තකාල adminයාවත්කාලීන කිරීමට ඔබට වරප්‍රසාද අවශ්‍ය වනු ඇත . එබැවින් එය භාවිතා කිරීම වඩාත් සුදුසු යැයි මම සිතමි venv.

පසුගිය වසර කිහිපය තුළ මම ගොඩනංවන පද්ධතිවල (ඊමාක්ස් පැකේජ, පයිතන් හුදකලා යෙදුම් සාදන්නන්, ස්ථාපකයන් ...) බොහෝ ගැටලු සොයාගෙන ඇත virtualenv. මම හිතන්නේ අපි මෙම අතිරේක විකල්පය ඉවත් කර පමණක් භාවිතා කරන විට පයිතන් වඩා හොඳ වේදිකාවක් වනු ඇත venv.


3
add2virtualenvයටින් PYTHONPATHඅභිරුචි _virtualenv_path_extensions.pthගොනුවක් එක් කිරීමෙන් ඔබේ වෙනස් කිරීම් site-packages. විකල්පයක් ලෙස ඔබ අථත්‍ය පරිසරය සක්‍රිය කරන සෑම අවස්ථාවකම ඔබ අමතන ගොනුවේ PYTHONPATHපරිසර විචල්‍යය යාවත්කාලීන කළ හැකිය bin/activate. නැතහොත් site-packagesඅමතර නාමාවලි වෙත යොමු කිරීම සඳහා ඔබට සිම්ලින්ක් එකතු කළ හැකිය . මෙම විකල්ප දෙකම සංවර්ධකයින් විසින් දෝශ නිරාකරණය සඳහා බහුලව භාවිතා කරන සාම්ප්‍රදායික විධාන රේඛා මෙවලම් වලට වඩා විනිවිද පෙනෙන ය. .pthලේඛනගත නොකළ නමක් සහිත චාරිත්‍රයක් භාවිතා කිරීමෙන් එය වඩාත් ඉන්ද්‍රජාලික IMO ලෙස පෙනේ.
රියාස් රිස්වි

16
හරි, ඒ නිසා අවශ්‍යතාවය මඟහරවා ගැනීම සඳහා නිවැරදි යාවත්කාලීන කිරීමක් මම stackoverflow.com/questions/48130371/… මගින් තහවුරු කර ඇත්තෙමි . ඔබගේ පළමු අදහස් දැක්වීමේදී SO පිළිබඳ උදව් නොමැතිකම සම්බන්ධයෙන්, මගේ එකම යෝජනාව වන්නේ ඔවුන් ඔබේ ගැටලුව විසඳන්නේ නම්, ඔබ පළ කරන විට ඔබ වෙනුවෙන් දෝශ නිරාකරණය කිරීමට මිනිසුන් පෙළඹවීමද? මූසික ක්ලික් කිරීමක් සඳහා පැය භාගයක විමර්ශනය + ලිවීම? හොඳ වෙළඳාමක් වගේ ...PYTHONPATHadd2virtualenv
රියාස් රිස්වි

7
නැත, ඔබ හරි - මම උත්සහ කිරීම ගැන හොඳ වීමට උත්සාහ කරමි. හෙක්, ඔබ මගේ ප්‍රදේශයේ සිටියා නම් මම ඔබට බියර් එකක් මිලදී ගන්නෙමි. මම මගේ පොරොන්දුව හොඳින් ඉටු කර, පයිතන් ලේඛකයන් මට පැහැදිලි කිරීම සඳහා නිල ලියකියවිලි / බින් / සක්‍රිය කිරීමට එකතු කිරීමට ඉඩ දෙයිදැයි බලන්න. මම ශ්‍රේෂ් not නොවුනත්, මම පයිතන් ගැන භයානක නැහැ. එය මට අමාරු නම් ... කෙසේ වෙතත්, ඔබගේ කාලය සඳහා ස්තූතියි - ඔබට සුභ පතනවා.
ස්ටීව්

10
@ මාලිකා ඒ. රූමිගේ ආශීර්වාදය “පයිපෙන්ව් නිර්මාතෘ අපට සහ අනෙක් අයට උනන්දුවෙන් අලෙවි කරයි, ඒ නිසා අපි පයිපෙන්ව් ගැන සඳහන් කරමු”.
රොබ් ග්‍රාන්ට්

6
Nd ඇන්ඩ්‍රියාමෝරෝ එය pyvenvප්‍රතික්ෂේප කරනු ලැබේ, නැත pyenv. මෙම මෙවලම්වල නම් සමඟ පටලවා ගැනීම එතරම් පහසුය.
ඩැනියෙල් හෝම්ස්

40

මම pipenvහාවා කුහරයෙන් බැස ඇත්තෙමි ( එය සැබවින්ම ගැඹුරු හා අඳුරු සිදුරකි ... ) සහ අවසාන පිළිතුර මීට වසර 2 කට පෙර අවසන් වී ඇති හෙයින්, පයිතන් අතථ්‍ය ලියුම් කවර මාතෘකාව පිළිබඳ නවතම වර්ධනයන් සමඟ සාකච්ඡාව යාවත්කාලීන කිරීම ප්‍රයෝජනවත් යැයි මට හැඟුණි. හමු විය.

වියාචනය:

මෙම පිළිතුර ලියුම් කවර විසඳුම් ලෙස පයිපෙන්ව් එදිරිව venv හා ඇති ගුණාංග පිළිබඳ කෝපාවිෂ් debate විවාදය දිගටම කරගෙන යාම ගැන නොවේ - මම ඒ දෙකම අනුමත නොකරමි . ඒ ගැන තියෙන්නේ PyPA පරස්පර තත්වයන් අනුමත කෙසේද අනාගත සංවර්ධන virtualenv ක කරමින් පල කිරීමට පොරොන්දු හෝ / හෝ සියලු දී ඔවුන් අතර තෝරා ගැනීමක්. මම මෙම මෙවලම් දෙක කෙරෙහි නිශ්චිතවම අවධානය යොමු කළේ ඒවා PyPA විසින් අභිෂේක ලත් අය වන බැවිනි .

venv

OP සටහන් කරන පරිදි, venv යනු පරිසරය අථත්‍යකරණය සඳහා වූ මෙවලමකි. නැති තුන්වන පාර්ශවයක් විසඳුමක්, නමුත් දේශීය මෙවලමක්. PyPA දෙන්නා venv නිර්මාණය කිරීම සඳහා VIRTUAL ලියුම් කවර : " අනුවාදය 3.5 දී වෙනස්: venv භාවිතය දැන් අථත්ය පරිසරය නිර්මාණය කිරීම සඳහා නිර්දේශ කරනු ලැබේ ."

pipenv

pipenv - වැනි venv - අථත්ය ලියුම් කවර නමුත් මීට අමතරව, රෝල්ස්,-දී පැකේජ කළමනාකරණ හා නිර්මාණය කිරීම සඳහා යොදා ගත හැකි ස්ථාන පරීක්ෂා ගොදුරු වීමේ ක්රියාකාරිත්වය. භාවිතා කරනවා වෙනුවටrequirements.txt, Pipfilepipenv හරහා පැකේජ කළමනාකරණය ලබා දෙයි . ලෙස PyPA සඳහා pipenv අනුමත පැකේජ කළමනාකරණ අදහස් වන බව පෙනී යයි බව,pipfileමින් ඉදිරියට යrequirements.txt.

කෙසේ වෙතත් : pipenv භාවිතා virtualenv , අතථ්ය ලියුම් කවර නිර්මාණය සඳහා එහි මෙවලමක් ලෙස නොවේ venv විසින් සහතික කරන ලද PyPA අථත්ය ලියුම් කවර නිර්මාණය කිරීම සඳහා යන ගමන්-කිරීමට මෙවලමක් ලෙස.

ගැටුම් ප්‍රමිති:

එබැවින් අථත්ය ලියුම් කවරයක විසඳුමක් ලබා ගැනීම එතරම් අපහසු නොවූයේ නම්, දැන් අපට PyPA විසින් විවිධ අථත්ය ලියුම් කවර විසඳුම් භාවිතා කරන විවිධ මෙවලම් දෙකක් අනුමත කර ඇත . මෙම ගැටුම ඉස්මතු කරන venv vs virtualenv පිළිබඳ ගිතූබ් විවාදය මෙතැනින් සොයාගත හැකිය .

ගැටුම් නිරාකරණය:

ඉහත සබැඳිය යොමු කරන ලද Github විවාදය සංසදයක් ඇත virtualenv ආසන පහසුකම් දිශාවට සංවර්ධන venv දී අනාගත නිකුත් :

සාදන ලද venv ට වැඩි කැමැත්තක් දක්වන්න: ඉලක්කගත පයිතන් සතුව venv තිබේ නම් අපි එය භාවිතා කරමින් පරිසරය නිර්මාණය කරන්නෙමු (ඉන්පසු අපි ලබා දෙන වෙනත් ඇපකරයන්ට පහසුකම් සැලසීම සඳහා ඒ පිළිබඳ පසුකාලීන මෙහෙයුම් සිදු කරන්න)

නිගමනය:

එබැවින් ප්‍රතිවාදී අථත්‍ය ලියුම් කවර විසඳුම් දෙක අතර අනාගත අභිසාරීතාවයක් ඇති බව පෙනේ, නමුත් මේ වන විට පයිපෙන්ව් - භාවිතා කරන virtualenv- ද්‍රව්‍යමය වශයෙන් වෙනස් වේ venv.

ලබා දී ඇති ගැටළු pipenv විසඳිය නොහැකි බවත්, ඇත්ත PyPA එහි ආශීර්වාදය ලබා දී ඇත, එය පෙනී දීප්තිමත් අනාගතයක් ඇති. නම් සහ virtualenv එහි යෝජිත සංවර්ධන අරමුණු මත සපයන, අතථ්ය ලියුම් කවරයක් විසඳුමක් තෝරා තවදුරටත් එක්කෝ කිරීමක් විය යුතුය pipenv හෝ venv .


8
මා තේරුම් ගත් දෙයින් : පයිපෙන්ව්ගේ සත්‍ය වටිනාකම මේ වන විටත් විවාදයට භාජනය වී ඇති අතර එය වසරකට වැඩි කාලයක් තුළ නිකුතුවක් කර නොමැත. එතැන් සිට බොහෝ දේ වෙනස් වී ඇති අතර, එය පයිපෙන්ව් සඳහා පමණක් නරක අතට හැරී ඇති බව මම තර්ක කරමි ( කවි සහ නල මෙවලම් වැනි මෙවලම් වඩා හොඳ හැඩයකින් යුක්ත වේ). මෙම PyPA පිටු යල්පැන ගිය අතර, මම ඔවුන් තත්වය පහත හෙලීම යුතු වාද pipenv . venv යනු සම්මත මෙවලමක් වන අතර එය ඉතා කාර්යක්ෂම නමුත් සීමිත ලක්ෂණ සමූහයක් ඇත. virtualenv සමග තරග කරන්නේ නැත venv ප්රදේශ ආවරණය කිරීම සඳහා නොව උත්සාහක දිනුම් venv කළ නොහැකි හෝ (එය සම්මත කිරීමේ සිට) යන්න කැමති නැහැ.
sinoroc

මගේ පශ්චාත් @sinoroc හුරුවට හෝ pipenv ගැන නොවේ., එය pipenv දෙකම අනුමත PyPA එකිනෙකට ගැටෙන මග පෙන්වීම පමණ විය සහ ලියුම් කවරයක් විසඳුමක් තෝරා වැඩි දුෂ්කර venv එය සංසරණය යම් මට්ටමක තෝරා ගැනීමට විරුද්ධත්වය පල කරනු ඇත පෙනී ආකාරය ඔවුන් අතර කිසිසේත් නැත. මම කිසිවක් අනුමත නොකරන බව සලකන්න, PyPA විසින් අනුමත කරන ලද මෙම විසඳුම් දෙක විකාශනය වන ආකාරය ගැන මම ඉගෙන ගත් දේ බෙදා ගත්තා . PyPA ඔවුන් කෙරෙහි දක්වන උනන්දුව සැලකිල්ලට ගෙන, මම ඔවුන් කැමති වුවත් නැතත් අදාළ නොවේ: පයිපෙන්ව් සහ වෙන්ව් භූ දර්ශනයේ කොටසක් බවට පත්වීමට ඉඩ ඇත
F1Linux

9
මම කෙවිටේ කියන්නේ venv හා එක පිප්ස් එකකට පුළුවන් තරම්. මේ දෙක මෙහෙ ඉන්න අතර, venv Python හි සම්මත පුස්තකාල හා අර්ථයෙන් කොටසක් එක පිප්ස් එකකට මෙන්ම එය Python දී vendored වෙනවා සිට (හරහා ensurepip ). අනෙක් මෙවලම් ( පයින්ව් ශ්‍රේණිය පසෙකට: සම්පූර්ණයෙන්ම වෙනස් දෙය) වෙන්ව සහ පයිප්ප මත රඳා පවතින බව හෝ අනුකරණය කරන බව පෙනේ (වැඩි හෝ අඩු සාර්ථකත්වයක් සහිතව) . නියමයි. දේවල් නිවසකින් දුගඳක් යන්න නම්, venv හා එක පිප්ස් එකකට ආරක්ෂිත ෆෝල්බැක් වේ. මම භාවිතා කරන අනෙක් මෙවලම වන්නේ ටෝක්ස් ( ටෝක්ස්-වෙන්ව් සමඟ) ය) අථත්‍ය පරිසරයන් නිර්මාණය කිරීමට සහ ජනගහනය කිරීමට උදව් කිරීමට (ward ජු, මැජික් නැත, අමුතු එය තවමත් සඳහන් කර නැත).
sinoroc

3
රැලි ඉවත් කිරීම සඳහා විශාල වැඩ කොටසක් කළ බැවින් මෙම නවතම පෝස්ට් රන් ය. පද්ධති පයිතන් උත්ශ්‍රේණිගත කරන විට වර්චුවලෙන්ව් භාවිතා කරමින් ද්විමය ගැටගැසීමේ ගැටළු ඇති බැවින් මම පයිප්ප හා වෙන්ව් වෙත ඇලී සිටිමි.
codeviper

1
අතීතයේ දී මම දෝෂ පිළිබඳ පයිපෙන්ව් නොවර්බෝස් සමඟ ගැටළු වලට මුහුණ දුන්නෙමි. argl සහ ditch. එසේම: chriswarrick.com/blog/2018/07/17/…
qrtLs

6

අප්රේල් 2020 යාවත්කාලීන කිරීම

මෙම පෝස්ට් එක හමු වූ විට මම එය සොයමින් සිටියෙමි . මා සිතන්නේ නව පයිතන් භාවිතා කරන්නන් සඳහා කුමන මෙවලම භාවිතා කළ යුතුද යන්න මෙම ප්‍රශ්නය තරමක් ව්‍යාකූල සහ දුෂ්කර බවයි. පයිපෙන්ව් සම්බන්ධයෙන් මෙය සෘජුවම PyPA වෙබ් අඩවියෙන් වේ:

මෙම නිබන්ධනය මගින් පයිතන් පුස්තකාල සංවර්ධනයට වඩා මූලික වශයෙන් පයිතන් යෙදුම් සංවර්ධනයේ අවශ්‍යතා කෙරෙහි අවධානය යොමු කරන මෙවලමක් ලෙස පයිපෙන්ව් ව්‍යාපෘතිය ආවරණය වන අතර, දෝෂ නිරාකරණය සහ නව අංග ප්‍රකාශයට පත් කිරීම වලක්වන ක්‍රියාවලි සහ නඩත්තු ගැටළු කිහිපයක් හරහා මෙම ව්‍යාපෘතිය ක්‍රියාත්මක වෙමින් පවතී ( නව නිකුතුවකින් තොරව 2019 සම්පූර්ණ කාලයත් සමඟ). මෙයින් අදහස් කරන්නේ නුදුරු කාලීනව, පයිපෙන්ව් තවමත් එම නිකුත් කිරීම් නිරාකරණය කිරීම සඳහා පැහැදිලි කාලරාමුවක් නොමැතිව විචක්ෂණ හා කාර්යසාධන ගැටළු කිහිපයකින් පෙළෙන බවයි.

මෙය එලෙසම පැවතුනද, පයිපෙන්ව් වෙනුවට හෝ එකට භාවිතා කිරීම සඳහා යෙදුම් යැපීම් කළමනාකරණය සඳහා වන වෙනත් මෙවලම් විමර්ශනය කිරීමට ව්‍යාපෘති නඩත්තුකරුවන්ට අවශ්‍ය වනු ඇත.

2020 අපේ‍්‍රල් පයිපෙන්ව් නිකුතුව සැලසුම් කළ පරිදි ඉදිරියට යන බව උපකල්පනය කර, ඉන් පසුව නිකුත් කිරීම ද අඛණ්ඩව පවතී නම්, නිබන්ධනයේ මෙම අවවාදය ඉවත් කරනු ලැබේ. එම නිකුතුවන් දිගටම පවතින්නේ නැත්නම්, නිබන්ධනයම ඉවත් කරනු ලබන අතර, පවතින පරායත්තතා කළමනාකරණ විකල්පයන් පිළිබඳ සාකච්ඡා පිටුවක් ආදේශ කරනු ඇත.


පෙනෙන ආකාරයට පයිපෙන්ව් දැනට (එනම් 2020 මැයි මාසයේදී) 2020 අප්‍රේල් නිකුතුව සඳහා පූර්ව නිකුතුවක තවමත් පවතී. මෙහි බලන්න .
ඇන්ඩ rew ජේම්ස්

මෙය ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත.
Flimm

මම හිතන්නේ l ෆ්ලිම් ප්‍රශ්න වලට හොඳින් පිළිතුරු දුන්නා. මම එෆ් 1 ලිනක්ස්ගේ පිළිතුරට ප්‍රතිචාර දක්වමින් සිටියෙමි
ආර්නුල්ඩ්

2
4 ජූනි 2020 වන විට pipenv: කණ්ඩායම PyPI 2 නිකුතුවක් 2020.5.28වඩාත් මෑතක සහ 2020.6.2: pypi.org/project/pipenv/#history
nonbeing
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.