Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【令和最新版】Python実行環境の選択肢 / Modern Python Env Manag...
Search
snhryt
July 15, 2024
Programming
0
130
【令和最新版】Python実行環境の選択肢 / Modern Python Env Management 20240628
2024年6月28日に社内勉強会で利用した資料に一部加筆修正を施したものです
snhryt
July 15, 2024
Tweet
Share
More Decks by snhryt
See All by snhryt
ヤバい(わるい意味)データでヤバい(いい意味)ことしようとしている話 / yabai-yabai-data-yabai
snhryt
0
67
寿命の短いデータ分析コードにも、ちょっとだけ優しくしてあげたい話 / kindness-for-short-lifespan-codes
snhryt
1
88
マテリアルズ・インフォマティクスの先端で起きていること / What's Happening at the Cutting Edge of Materials Informatics
snhryt
1
250
Other Decks in Programming
See All in Programming
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
490
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
650
QA x AIエコシステム段階構築作戦
osu
0
140
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
4
590
階層化自動テストで開発に機動力を
ickx
1
420
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
160
型で語るカタ
irof
0
800
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
440
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
120
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
200
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
480
PHPカンファレンス関西2025 基調講演
sugimotokei
5
930
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
How STYLIGHT went responsive
nonsquared
100
5.6k
Building Applications with DynamoDB
mza
95
6.5k
Music & Morning Musume
bryan
46
6.7k
How GitHub (no longer) Works
holman
314
140k
Done Done
chrislema
184
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
4 Signs Your Business is Dying
shpigford
184
22k
Bash Introduction
62gerente
613
210k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Visualization
eitanlees
146
16k
Transcript
ʲྩ࠷৽൛ʳ 1ZUIPO࣮ߦڥͷબࢶ TOISZU
*OUSPEVDUJPO
ఆಡऀ • ಛʹͩ͜ΘΓͳ͍͚ͲɺීஈͳΜͱͳ͘ QZFOW WFOW QJQΛ͍ͬͯΔ • 3ZFͱ͔VWͬͯ࠷ۙͨ·ʹฉ͚͘ͲͳΜͳͷʁ
ʲྩ࠷৽൛ʳ 1ZUIPO࣮ߦڥͷબࢶ TOISZU ͦͦԿΛࢦ͢ʁ
1ZUIPO࣮ߦڥཁૉͰߏ͞ΕΔʢͷͱ͢Δʣ • 1ZUIPOͷόʔδϣϯཧ • Ծڥ • ύοέʔδཧ
αϚϦʔ • νʔϜ։ൃΫϥυͷσϓϩΠΛ͢ΔͳΒ %PDLFS QJQ͕ͳΜ͔Μ҆ύΠ • ࣗͰ͖์͍͍ͬͯͳΒ • ʮ1ZUIPOҎ֎ͷݴޠ৮ΔΜͩΑͳ͊ʯBTEG VW
• ʮ1ZUIPO͚ͩͰ͍͍ΜͩΑͳ͊ʯ3ZF બࢶ ݸਓత͓͢͢Ί 1ZUIPOͷόʔδϣϯཧ Ծڥ ύοέʔδཧ ˒ˑˑˑˑ QZFOW $POEB $POEB ˒˒ˑˑˑ QZFOW WFOW QJQ ˒ˑˑˑˑ QZFOW 1JQFOW 1JQFOW ˒˒˒ˑˑ BOZFOW 1PFUSZ 1PFUSZ ˒˒ˑˑˑ BOZFOW 1%. 1%. ˒˒˒˒ˑ BTEG VW VW ˒˒˒˒˒ 3ZF 3ZF 3ZF VW ˒˒˒˒ˑ )BUDI )BUDI )BUDI ˒˒˒˒˒ %PDLFS %PDLFS QJQ ˒˒˒˒ˑ %PDLFS %PDLFS 1PFUSZ ˞·͡ΊʹશΈ߹ΘͤΛߟ͑Δͱύλʔϯ͕Ε্͕ΔͷͰɺ͋Δఔ࣌ײΛଗ͑ͭͭɺ͍͑ͰΈ߹ΘͤΛઃఆ͍ͯ͠·͢
ิʮݸਓతʹʯͱॻ͖·͕ͨ͠ɺࢲ͜Μͳঢ়گͷਓؒ • ։ൃͷେʢ͙Β͍ʣ1ZUIPO • ओͳ༻్σʔλੳɺ.-σϦϯάɺ؆қͳ8FCΞϓϦέʔγϣϯ։ൃ 4USFBNMJU FUD • Γ͕42- #JH2VFSZ
Γ͕5FSSBGPSN • 8JOEPXTͰ։ൃ͠ͳ͍ • .BDͷϩʔΧϧ্Ͱ։ൃ͢Δ͜ͱ͕ଟ͍ • Ϋϥυ্ͷ-JOVYαʔόʔ্Ͱ։ൃ͢Δ͜ͱ͋Γ • ۀͱϓϥΠϕʔτར༻ͲͪΒ͋Γ • ۀ༻్ͰΫϦςΟΧϧͳ੍ʢFH1ZUIPOܥ͕ඞਢͰʙʣجຊͳ͍ • ͦͦ࠷ۙ͋·ΓۀͰίʔυΛॻ͚͍ͯͳ͍
1ZUIPOͷόʔδϣϯཧ
͜ͷதͩͱɺݸਓతʹ BTEG Ұ • QZFOW1ZUIPOͷͨΊͷόʔδϣϯཧπʔϧ • BOZFOWQZFOWΛ࢝Ίͱ͢Δɺෳݴޠͷ FOWΛҰ؏ͯ͠ཧ͢Δπʔϧ • anyenv
install pyenv ͷΑ͏ʹ͏ • 1ZUIPOҎ֎ͷݴޠΛΘͳ͍߹ϝϦοτ͕΄΅ͳ͍ɻ ͨͩQZFOWΛΠϯετʔϧ͢Δ·Ͱʹͻͱख͕ؒ૿͑Δ͚ͩ • ຊਓͷํ !SJZXP ͕ݸਓ։ൃ͍ͯͯ͠ɺ೦ͳ͕ΒҎ߱ϦϦʔε్͕ઈ͍͑ͯΔ • BTEGQZUIPOΛؚΉɺ͞·͟·ͳݴޠɾ$-*ίϚϯυͷόʔδϣϯཧπʔϧ • asdf plugin-add python; asdf install python 3.12.XX ͷΑ͏ʹ͏ • BOZFOWʮόʔδϣϯཧπʔϧΛཧ͢Δπʔϧʯ͕ͩͬͨɺ BTEGΑΓతʹݴޠɾ$-*ͷόʔδϣϯཧ͕Ͱ͖Δ • WͰ֬ೝͨ͠ΒɺϓϥάΠϯݸʢʂʣ͋ͬͨ 5FSSBGPSNؔ࿈͚ͩͰ͜ͷྔˠ ʢDGBOZFOWͩͱUGFOWͷΈʣ 🙏 FYDVTF🙏 NJTFଘࡏ͚ͩೝ͍ͯ͠·͕͢ ΩϟονΞοϓͰ͖ͯͳ͍Ͱ͢ʜ
ࢀߟόʔδϣϯཧπʔϧͷ(JU)VCελʔਪҠ IUUQTTUBSIJTUPSZDPNQZFOWQZFOWBOZFOWBOZFOWBTEGWNBTEG%BUF
Ծڥɾύοέʔδཧ
࠷ۙԾڥͱύοέʔδཧ͕ͭͷπʔϧͰ݁͢Δ͜ͱ͕ଟ͍ • ҎԼͯ͢ɺԾڥߏஙύοέʔδཧͬͯ͘ΕΔπʔϧ • $POEB "OBDPOEB.JOJDPOEB • 1JQFOW • 1PFUSZ
• 1%. • VW • ରൺͱͯ͠ɺൺֱతલ͔Βଘࡏ͢Δ WJSUVBMFOW WFOW ͳͲ ԾڥͷΈΛఏڙ͠ɺύοέʔδཧQJQͳͲଞͰ୲͏ඞཁ͕͋ͬͨ • ͱ͍͑ɺ্هͷԾڥɾύοέʔδཧҰମܕܥͷπʔϧɺཪଆͰ WJSUVBMFOW WFOW ͷڥཱ͕͍ͬͯͯɺͦΕΛπʔϧଆͰϚωʔδ͍ͯ͠Δ͜ͱ͕ଟ͍ IUUQTTUBSIJTUPSZDPNDPOEBDPOEBQZQBQJQFOWQZUIPO QPFUSZQPFUSZQENQSPKFDUQENBTUSBMTIVW%BUF
$POEB "OBDPOEB.JOJDPOEB • ͍ʂ • "OBDPOEBେن৫Ͱͷ༻ར༻ʹ༗ྉϥΠηϯε͕ඞཁʹ ˠ .JOJDPOEB DPOEBGPSHFͰͷճආ͕Ұൠత ˠ
ʘ໘͍͘͞ ʗ • ԾڥߏஙͱύοέʔδཧΛ྆ํͬͯ͘ΕΔʮฮʯͰɺ ͦΕΏ͑8FCɾจݙͷࢀߟใͷ๛ͳͷͰɺॳֶऀ͖Ͱ͋Δ • "OBDPOEBͷग़ࣗΛߟ͑ΔͱͨΓલ͕ͩʣػցֶशσʔλੳͷखஈͱͯ͠ɺͨ·ͨ· 1ZUIPO͕ద͓ͯ͠Γɺͦͷ1ZUIPOΛಈ͔ͨ͢Ίͷʙͱ͍͏จ຺ͰجຊతʹΘΕ͍ͯΔ • 8FCΞϓϦέʔγϣϯ։ൃͰ$POEB͕ΘΕΔέʔεͬͯ͋ΔͷͩΖ͏͔ʁ🧐
1JQFOW • QJQͷ։ൃݩͰ͋Δ1Z1"͕։ൃ͍ͯ͠Δπʔϧ • UPNMϑΝΠϧ MPDLϑΝΠϧͰͷύοέʔδཧͷઌۦऀతଘࡏ • ͨͩ͠ɺཧʹ༻͍ΒΕΔ 1JQGJMF ಠࣗϑΥʔϚοτͰඇ1&1४ڌ
• ޙʹ͍͕͕͋ͬͨɺಛʹ 1PFUSZొޙʹ͍͕ͳ͘ͳ͍ͬͯΔ • ͱ͍͑ɺࠓܧଓతʹϦϦʔε͍ͯ͠ΔͷͰ ػೳΞοϓσʔτணʑͱೖ͍ͬͯΔ༷ʁ • ʢ͑ͯͳ͍ͷͰৄ͍͠ਓڭ͍͑ͯͩ͘͞ʣ • Μ͘͠͞ΜͷϒϩάͰࠒ·Ͱͷมભ͕ৄ͘͠հ͞ΕͯΔͷͰੋඇ IUUQTWBBBBBBORVJTIIBUFOBCMPHDPNFOUSZ
1PFUSZ • ʹೖ͔ͬͯΒ1JQFOWΛൈ͍ͯओྲྀʹͳΓͭͭ͋Δπʔϧ • ͲͪΒ͔ͱ͍͏ͱɺԾڥͱ͍͏ΑΓɺύοέʔδཧจ຺͕ϝΠϯͳҹ • ڧΈ • QZQSPKFDUUPNM ͰSFRVJSFNOUTUYU
TFUVQQZ ͷ྆ํͷׂΛ ՌͨͤΔɻ͔͠ࢹ֮తʹݟ͍͢ • QZQSPKFDUUPNM1&1४ڌ ˠ ޓੑߴ • QJQͩͱύοέʔδͷґଘؔͰίϯϑϦΫτ͕͠͠ ൃੜ͢Δ͕ɺ1PFUSZڧྗͳϦκϧόͷ͓͔͛Ͱɺ ίϯϑϦΫτΛ͍͍ײ͡ʹղܾͯ͘͠ΕΔʢ͜ͱ͕ଟ͍ʣ • GMBLF QZUFTUͷ։ൃ͔࣌͠Θͳ͍ύοέʔδΛ͚ͯ ཧͰ͖Δ • ύοέʔδΛՃ͢Δͱඞͣόʔδϣϯ͕QZQSPKFDUUPNM ʹ ໌ه͞ΕΔ ˠ ίʔυͷ࣮ߦ࠶ݱੑͷ୲อ • SFRVJSFNFOUTUYU Ͱ͋Γ͕ͪͳɺόʔδϣϯࢦఆ࿙ΕʹΑΔ ʮલಈ͍͚ͨͲࠓಈ͔ͳ͘ͳͬͯ͠·ͬͨʯΛ͛Δ • WFOW QJQͱͷରൺ • Ծڥߏஙpython –m venv venv; source venv/bin/activate; pip install –r requirements.txt ˱poetry install • ύοέʔδͷΠϯετʔϧpip install pandas ˱ poetry add pandas • λεΫϥϯφʔͱͯ͠ͷػೳͳ͠ʢࢀߟ 1PFUSZͷ TDSJQUTλεΫϥϯφʔػೳͰͳ͍ʣ ˢ͍ͭ࠷ۙۀͰͬͨQZQSPKFDUUPNM
1%. • 1%.1ZUIPO%FWFMPQNFOU.BTUFSˡͭΑͦ͏ʢখฒײʣ • 1PFUSZͷޙഐʢϦϦʔελΠϛϯάతʹʣͰɺ1PFUSZͱಉ༷ʹQZQSPKFDUUPNM ϕʔεͰϓϩδΣΫτɾύοέʔδΛཧՄೳ • ίϚϯυૢ࡞ײͷޓੑߴ͘ɺ͔ͳΓγʔϜϨεʹҠߦͰ͖Δ •
1PFUSZͱൺͯͷڧΈࠓͱͳͬͯ͋·Γͳ͍ • 1&1४ڌ ͦͦ1&1ࣗମ͕ϦδΣΫτ͞Εͨ • ԾڥΛ࡞ΒͣʹɺϩʔΧϧͷ __pypackages__ σΟϨΫτϦʹඞཁͳͷΛͯ͢Πϯετʔϧ͢Δ • ͍ ͔ͬͨ • 1PFUSZ͕ΊͪΌͪ͘Ό͘ͳͬͯΔ༷ • Ωϟογϡͳ͠ঢ়ଶͷ QPFUSZJOTUBMMWTQEN JOTUBMMͷൺֱ ˞1ZUIPO1BDLBHF.BOBHFS4IPPUPVUͷ࣌ʢڕͪ͜ΒͷهࣄΛࢀরʣͱຊ࣌Ͱൺֱ • QEN MBUFTU T • QPFUSZT • QPFUSZT IUUQTEJTDVTTQZUIPOPSHUQFQQZUIPOMPDBMQBDLBHFTEJSFDUPSZ
VW • ݄ʹൃද͞Ε͔ͨΓͷ͔ͳΓ৽͍͠πʔϧɻ 3VTUͷര1ZUIPOϑΥʔϚολʔz3VGGzΛ։ൃ͍ͯ͠Δ"TUSBM͕ࣾ։ൃ͍ͯ͠Δ • ಛ • 3VTUͰॻ͔Ε͍ͯΔͷͰരʢDG1PFUSZ 1%.1ZUIPOͰॻ͔Ε͍ͯΔʣ •
ૢ࡞ײWFOW QJQͱ΄΅ಉ͡ • Ծڥ্ཱͪ͛uv venv; source .venv/bin/activate • ύοέʔδΠϯετʔϧ uv pip install pandas • QZQSPKFDUUPNMʹରԠ͓ͯ͠Γ uv pip install –r pyproject.toml ͱ͍ͬͨૢ࡞Մೳ Ωϟογϡͳ͠ $PME Ωϟογϡ͋Γ 8BSN IUUQTBTUSBMTICMPHVW
ͥΜͿΓ
3ZF • !NJUTVIJLPʢ"SNJO3POBDIFS͞Μʣ͕ݸਓ։ൃ͖ͯͨ͠ 1ZUIPOͷόʔδϣϯཧؚΊͨ3VTUͷશ෦Γπʔϧ • ͕ͯ͢ SZFίϚϯυͰ݁͢Δ VW͑Δ • ϓϩδΣΫτ࡞rye
init • όʔδϣϯࢦఆrye pin 3.12 • ύοέʔδͷҰׅΠϯετʔϧʢQZQSPKFDUUPNMܦ༝ʣrye sync • ύοέʔδͷΠϯετʔϧrye add “flask>=2.0” • Ծڥ্Ͱͷ࣮ߦ rye run xxx • 3ZFͱVWʹີͳͭͳ͕Γ͕͋Δ • 3ZFͷϙςϯγϟϧɾχʔζͷߴ·Γͱཪෲʹɺݸਓ։ൃʹݶքΛײ͍ͯͨ͡ • ݄ͷVWϦϦʔεͷλΠϛϯάͰɺVW։ൃݩͷ"TUSBM͕ࣾ3ZFͷཧΛҾ͖ܧ͙ UBLJOHTUFXBSETIJQ ͜ͱΛൃද • কདྷతʹVWΛ֦ு͠ɺͦ͜ʹ3ZFͷػೳࢥΛ౷߹͍ͯ͘͠ ˞3ZF(SPXT8JUI67ΛಡΜͰ͜͏ղऍ͍ͯ͠·͕͢ɺཧղɾهड़͕ޡ͍ͬͯͨΒ͝ΊΜͳ͍͞ɾɾɾ
)BUDI • QJQ 1JQFOWͱಉ͡։ൃݩͷ1Z1"͕։ൃ͍ͯ͠Δશ෦Γπʔϧ • ͕ͯ͢ IBUDIίϚϯυͰ݁͠ɺ༻ײ3ZFʹ͍ۙɻVW͑Δ • ϓϩδΣΫτ࡞hatch new
• όʔδϣϯࢦఆhatch python install 3.12 • Ծڥ্Ͱͷ࣮ߦ hatch run python xxx • 3ZFͱൺֱͨ͠ಛ • QZQSPKFDUUPNMʹґଘύοέʔδΛॻ͚ɺ IBUDISVOΛͨ͠ͱ͖ʹࣗಈͰΠϯετʔϧ͞ΕΔ • 1ZUIPOͰॻ͔Ε͍ͯΔͷͷߴ • 1Z"QQͱ͍͏3VTUͷߴͳϥϯλΠϜΠϯετʔϥʔͷ 1ZUIPO8SBQQFSΛར༻͍ͯ͠ΔͨΊ • ೦ͳ͕Βɺ3ZFΑΓޙൃ͕͍ͩશʹෛ͚͍ͯΔʜ IUUQTTUBSIJTUPSZDPNBTUSBMTISZFQZQBIBUDI%BUF
$PODMVTJPO
ࢲ͍·ԿΛ͔͍ͭͬͯΔ͔ʁ • ෳਓͰ·͡Ίʹ։ൃ͢Δͱ͖ %PDLFS QJQ • ݸਓͰదʹ։ൃ͢Δͱ͖ BTEG VW •
࠷ۙ1ZUIPOॻ͘ͱ͖3ZFʹد͍͍͔ͤͯͱࢥ͍࢝Ί͍ͯΔɾɾɾ બࢶ ݸਓత͓͢͢Ί 1ZUIPOͷόʔδϣϯཧ Ծڥ ύοέʔδཧ ˒ˑˑˑˑ QZFOW $POEB $POEB ˒˒ˑˑˑ QZFOW WFOW QJQ ˒ˑˑˑˑ QZFOW 1JQFOW 1JQFOW ˒˒˒ˑˑ BOZFOW 1PFUSZ 1PFUSZ ˒˒ˑˑˑ BOZFOW 1%. 1%. ˒˒˒˒ˑ BTEG VW VW ˒˒˒˒˒ 3ZF 3ZF 3ZF VW ˒˒˒˒ˑ )BUDI )BUDI )BUDI ˒˒˒˒˒ %PDLFS %PDLFS QJQ ˒˒˒˒ˑ %PDLFS %PDLFS 1PFUSZ
ݸਓతͳߟ͑ • %PDLFS QJQͰॻ͍͓͚ͯͱΓ͋͑ͣϙʔλϏϦςΟ͕ߴ͍͠ɺ%PDLFS͕ ෳͷ։ൃऀϩʔϧʢYYYΤϯδχΞɺσʔλYYYʣͷڞ௨ݴޠʹͳͬͯ͘ΕΔ • Α͋͘ΔύλʔϯͳͷͰ8FCͷࢀߟใଟ͍ • έʔεʹΑΔ͕ DPNQPTFZBNM
ͰTFSWJDF͝ͱʹ։ൃΛਐΊΒΕΔHPPE • ͕ɺຖճ%PDLFSGJMFΛॻ͍ͨΓɺCVJME͢Δͷਖ਼໘ • ύοέʔδͷΠϯετʔϧɺ։ൃͷணख͕͞ਖ਼ٛɻ3VTU͔͠উͨΜ • 'PSNBUUFSଂܥͷπʔϧ͋Δ͕ɺͦͷΜQSFDPNNJUʹد͍ͤͨ
αϚϦʔʢ࠶ܝʣ • νʔϜ։ൃΫϥυͷσϓϩΠΛ͢ΔͳΒ %PDLFS QJQ͕ͳΜ͔Μ҆ύΠ • ࣗͰ͖์͍͍ͬͯͳΒ • ʮ1ZUIPOҎ֎ͷݴޠ৮ΔΜͩΑͳ͊ʯBTEG VW
• ʮ1ZUIPO͚ͩͰ͍͍ΜͩΑͳ͊ʯ3ZF બࢶ ݸਓత͓͢͢Ί 1ZUIPOͷόʔδϣϯཧ Ծڥ ύοέʔδཧ ˒ˑˑˑˑ QZFOW $POEB $POEB ˒˒ˑˑˑ QZFOW WFOW QJQ ˒ˑˑˑˑ QZFOW 1JQFOW 1JQFOW ˒˒˒ˑˑ BOZFOW 1PFUSZ 1PFUSZ ˒˒ˑˑˑ BOZFOW 1%. 1%. ˒˒˒˒ˑ BTEG VW VW ˒˒˒˒˒ 3ZF 3ZF 3ZF VW ˒˒˒˒ˑ )BUDI )BUDI )BUDI ˒˒˒˒˒ %PDLFS %PDLFS QJQ ˒˒˒˒ˑ %PDLFS %PDLFS 1PFUSZ ˞·͡ΊʹશΈ߹ΘͤΛߟ͑Δͱύλʔϯ͕Ε্͕ΔͷͰɺ͋Δఔ࣌ײΛଗ͑ͭͭɺ͍͑ͰΈ߹ΘͤΛઃఆ͍ͯ͠·͢
5IBOLZPV