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
DataformでPythonする / dataform-de-python
snhryt
0
110
ヤバい(わるい意味)データでヤバい(いい意味)ことしようとしている話 / yabai-yabai-data-yabai
snhryt
0
78
寿命の短いデータ分析コードにも、ちょっとだけ優しくしてあげたい話 / 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
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
4
1.6k
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
110
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
35
10k
iOS開発スターターキットの作り方
akidon0000
0
230
Understanding Kotlin Multiplatform
l2hyunwoo
0
240
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
230
フロントエンドのパフォーマンスチューニング
koukimiura
6
2.3k
What's new in Adaptive Android development
fornewid
0
130
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
890
CDK引数設計道場100本ノック
badmintoncryer
2
590
What's new in AppKit on macOS 26
1024jp
0
180
Quality Gates in the Age of Agentic Coding
helmedeiros
PRO
1
110
Featured
See All Featured
Music & Morning Musume
bryan
46
6.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
It's Worth the Effort
3n
185
28k
Six Lessons from altMBA
skipperchong
28
3.9k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Embracing the Ebb and Flow
colly
86
4.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Agile that works and the tools we love
rasmusluckow
329
21k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
The Language of Interfaces
destraynor
158
25k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
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