- 1 1. Pythonã§å¥ãã¡ã€ã«ãåŒã³åºãçç±ãšã¡ãªãã
- 2 2. Pythonã®åºæ¬çãªimportæã®äœ¿ãæ¹
- 3 3. ãµããã£ã¬ã¯ããªãä»ãã©ã«ãããã®ãã¡ã€ã«åŒã³åºã
- 3.1 Pythonã§ã¯ãã©ã«ãæ§æã«ãã£ãŠimportæ¹æ³ãå€ãã
- 3.2 ãµããã£ã¬ã¯ããªã®ãã¡ã€ã«ãã€ã³ããŒããã
- 3.3 ããã±ãŒãžãšããŠæ±ãã«ã¯ init.py ãå¿ èŠãªå Žåããã
- 3.4 芪ãã£ã¬ã¯ããªãå åŒãã©ã«ãã®ãã¡ã€ã«ãã€ã³ããŒããã
- 3.5 絶察ãã¹ vs çžå¯Ÿãã¹ã®éãã«æ³šæ
- 4 4. çžå¯Ÿã€ã³ããŒããšçµ¶å¯Ÿã€ã³ããŒãã®éããšäœ¿ãåã
- 4.1 Pythonã®importã«ã¯2çš®é¡ãã
- 4.2 絶察ã€ã³ããŒããšã¯ïŒ
- 4.3 çžå¯Ÿã€ã³ããŒããšã¯ïŒ
- 4.4 ã©ã¡ãã䜿ãã¹ãïŒ å®åã§ã®äœ¿ãåãæ¹
- 4.5 å®éã®ãšã©ãŒäŸïŒçžå¯Ÿã€ã³ããŒããåããªãïŒ
- 4.6 çµè«ïŒåºæ¬ã¯çµ¶å¯Ÿã€ã³ããŒããç¶æ³ã«ãã£ãŠçžå¯Ÿã€ã³ããŒã
- 5 5. ã¢ãžã¥ãŒã«ç®¡çã®ããã®ããã±ãŒãžå
- 6 6. ããããã€ã³ããŒããšã©ãŒãšãã®å¯ŸåŠæ³
- 6.1 importã«å€±æããçç±ã¯ããã¹ãšæ§é ã®çè§£äžè¶³ãå€ã
- 6.2 ModuleNotFoundErrorïŒã¢ãžã¥ãŒã«ãèŠã€ãããŸãã
- 6.3 ImportErrorïŒã¢ãžã¥ãŒã«ã¯ããããäžèº«ãèªã¿èŸŒããªã
- 6.4 çžå¯Ÿã€ã³ããŒãã®ãšã©ãŒïŒValueErrorãImportError
- 6.5 ã€ã³ããŒããšã©ãŒåé¿ã®ããã®ãã¹ããã©ã¯ãã£ã¹
- 7 7. å®è·µã³ãŒãäŸïŒå¥ãã¡ã€ã«ã®é¢æ°ãåŒã³åºããŠäœ¿ã£ãŠã¿ãã
- 7.1 å®éã«æãåãããŠçè§£ããã
- 7.2 ã¹ããã1ïŒåŒã³åºã颿°ãå®çŸ©ãããã¡ã€ã«ãäœæãã
- 7.3 ã¹ããã2ïŒåŒã³åºãå ã®ãã¡ã€ã«ããimportãã
- 7.4 ã¹ããã3ïŒå®è¡ããŠçµæã確èªãã
- 7.5 å¥ã®importæ¹æ³ã詊ããŠã¿ãïŒfrom-importïŒ
- 7.6 ã³ãŒããæŽçããããã®ã¯ã³ãã€ã³ã
- 8 8. FAQïŒPythonã®å¥ãã¡ã€ã«åŒã³åºãã«é¢ãããããã質å
- 8.1 Q1. import ãš from ... import ... ã®éãã¯äœã§ããïŒ
- 8.2 Q2. çžå¯Ÿã€ã³ããŒããããŸãåããŸããããªãã§ããïŒ
- 8.3 Q3. Pythonã§ãã¡ã€ã«æ§æãã©ãããã°ãããè¿·ããŸã
- 8.4 Q4. __init__.py ã¯å¿ ãå¿ èŠã§ããïŒ
- 8.5 Q5. importæã«æ¥æ¬èªãç¹æ®æåãå«ããã¡ã€ã«åã¯äœ¿ããŸããïŒ
- 9 9. ãŸãšãïŒimportãçè§£ããã°Pythonã¯ãã£ãšèªç±ã«ãªã
1. Pythonã§å¥ãã¡ã€ã«ãåŒã³åºãçç±ãšã¡ãªãã
ããã°ã©ã ã倧ãããªãã»ã©ãã³ãŒãã®åå²ãéèŠã«ãªã
PythonãåŠã³å§ããã°ããã®é ã¯ã1ã€ã®ãã¡ã€ã«ã«ãã¹ãŠã®åŠçãæžããŠãåé¡ãããŸãããããããã³ãŒããå¢ããã«ã€ããŠãåŠçãè€éã«ãªãã1ã€ã®ãã¡ã€ã«ã§ç®¡çããã®ãé£ãããªã£ãŠããŸãã
ããã§éèŠã«ãªãã®ããå¥ãã¡ã€ã«ã«é¢æ°ãã¯ã©ã¹ãåããŠå®çŸ©ããå¿ èŠã«å¿ããŠåŒã³åºããšããæ§é åã®èãæ¹ã§ããããã«ãããã³ãŒããèªã¿ããããªããä¿å®æ§ãåå©çšæ§ãæ Œæ®µã«åäžããŸãã
ã³ãŒãã®åå©çšæ§ãé«ãããã
ããšãã°ãæååãæŽåœ¢ãã颿°ããæ¥ä»ããã©ãŒããããã颿°ãªã©ãè€æ°ã®ã¹ã¯ãªããã§ç¹°ãè¿ã䜿ãããåŠçã¯å€ãååšããŸããããããåŠçãå¥ãã¡ã€ã«ã«ãŸãšããŠããã°ãä»ã®ã¹ã¯ãªããã§ãimport
ããã ãã§ç°¡åã«å©çšã§ããŸãã
# utils.py ã«å®çŸ©
def format_date(date):
return date.strftime('%Y-%m-%d')
# main.py ããåŒã³åºã
from utils import format_date
ãã®ããã«ããããšã§ãäžåºŠæžããã³ãŒããäœåºŠã§ã䜿ããŸããããããäœæ¥å¹çãé£èºçã«ã¢ããããŸãã
ä¿å®æ§ã»å¯èªæ§ã®åäž
1ã€ã®ãã¡ã€ã«ã«ãã¹ãŠã®åŠçãæžããŠããŸããšããã°ãçºçããå Žåã«åå ãç¹å®ããã®ãå°é£ã«ãªããŸãããŸããä»äººãã³ãŒããèªããšãã«ãçè§£ãã¥ãããªããŸãã
æ©èœããšã«ãã¡ã€ã«ãåããŠç®¡çããã°ã
- ãããŒã¿ããŒã¹åŠçã¯ãã®ãã¡ã€ã«ã
- ããŠãŒã¶ãŒå ¥åã®ããªããŒã·ã§ã³ã¯ãã®ãã¡ã€ã«ã
ãšããããã«ãè²¬ä»»ã®æåšãæç¢ºã«ãªããŸãã
çµæãšããŠã
- ãã°ã®ä¿®æ£ãæ©ããªã
- ããŒã éçºã§ãã³ã³ããªã¯ããæžã
- ã³ãŒãã¬ãã¥ãŒããããããªã
ãšããã¡ãªãããåŸãããŸãã
æ¬æ Œçãªãããžã§ã¯ãã§ã¯å¿ é ã®ã¹ãã«
Pythonã§Webã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåããæ©æ¢°åŠç¿ã®ã¢ãã«ãè€æ°ç®¡çãããããªãããžã§ã¯ãã§ã¯ããã¡ã€ã«ãåå²ããŠæ©èœãæŽçããããšãåºæ¬äžã®åºæ¬ã§ãããã¬ãŒã ã¯ãŒã¯ïŒDjangoãFastAPIãªã©ïŒã䜿ãéãããã£ã¬ã¯ããªæ§æãšimportã®æŠå¿µãçè§£ããŠããããšãåæã«ãªããŸãã
ãã®ãããPythonã®ååŠè ã§ãã£ãŠãããå¥ãã¡ã€ã«ãã颿°ãã¯ã©ã¹ãåŒã³åºãæ¹æ³ãã¯æ©ã段éã§èº«ã«ã€ããŠããã¹ãç¥èã§ãã
2. Pythonã®åºæ¬çãªimportæã®äœ¿ãæ¹
importæãšã¯ïŒ
Pythonã§ä»ã®ãã¡ã€ã«ïŒã¢ãžã¥ãŒã«ïŒã®é¢æ°ãã¯ã©ã¹ã䜿ããããšãã«äœ¿ãã®ã import
æã§ãã
ããã䜿ãã°ãå¥ãã¡ã€ã«ã«å®çŸ©ãããåŠçãããŸãã§ãã®ãã¡ã€ã«å
ã«ãããã®ããã«åŒã³åºãããšãã§ããŸãã
Pythonã§ã¯ããã®ä»çµã¿ã䜿ã£ãŠæšæºã©ã€ãã©ãªã®æ©èœãèªã¿èŸŒãã ããèªäœããã¢ãžã¥ãŒã«ã䜿ã£ããã§ããŸãã
åããã©ã«ãå ã®ãã¡ã€ã«ãèªã¿èŸŒãåºæ¬ã®import
ãã£ãšãåºæ¬çãªäœ¿ãæ¹ã¯ãåããã£ã¬ã¯ããªã«ããå¥ã®ãã¡ã€ã«ãèªã¿èŸŒãæ¹æ³ã§ãã
ããšãã°ã以äžã®ãããªæ§æãèããŠã¿ãŸãããã
project/
âââ main.py
âââ utils.py
utils.py
ã«å®çŸ©ããã颿°ã main.py
ãã䜿ãããå Žåãæ¬¡ã®ããã«èšè¿°ããŸãã
# utils.py
def greet(name):
return f"ããã«ã¡ã¯ã{name}ããïŒ"
# main.py
import utils
print(utils.greet("äœå·"))
ãã®ããã«ããã¡ã€ã«åãæå®ããã ãã§ããã®äžã«ãã颿°ã倿°ã䜿ããããã«ãªããŸãã
颿°ã«ã¢ã¯ã»ã¹ãããšãã¯ãã¢ãžã¥ãŒã«å.颿°åãã®åœ¢åŒã§èšè¿°ããŸãã
from-importæ§æã§ç¹å®ã®é¢æ°ã ããèªã¿èŸŒã
ç¹å®ã®é¢æ°ã ãã䜿ãããå Žåã¯ãfrom ã¢ãžã¥ãŒã«å import 颿°å
ãšãã圢åŒã§èšè¿°ã§ããŸãã
# main.py
from utils import greet
print(greet("äœå·"))
ãã®ããã«ããã°ãutils.greet()
ã§ã¯ãªããgreet()
ãšã·ã³ãã«ã«æžããŸãã
ãªããè€æ°ã®é¢æ°ããŸãšããŠã€ã³ããŒãããå Žåã¯ã«ã³ãåºåãã§èšè¿°ã§ããŸãã
from utils import greet, farewell
importã«å¥åãã€ããŠäœ¿ãïŒãšã€ãªã¢ã¹ïŒ
ã¢ãžã¥ãŒã«åãé·ãå Žåããç°¡ç¥åãããå Žåã¯ãas
ã䜿ã£ãŠãšã€ãªã¢ã¹ïŒå¥åïŒãæå®ã§ããŸãã
import utils as ut
print(ut.greet("äœå·"))
ãã®ããã«ããã°ãã³ãŒããç°¡æœã«ä¿ã¡ã€ã€ãä»ã®ã¢ãžã¥ãŒã«ãšè¡çªããªãããã«ã§ããŸãã
importæã®æžãå Žæã«æ³šæ
Pythonã§ã¯ãåºæ¬çã« import
æã¯ãã¡ã€ã«ã®å
é ã«æžãã®ãæšå¥šãããŠããŸãã
ãã ããäŸå€çã«äžéšã®ã©ã€ãã©ãªã䜿ãã¿ã€ãã³ã°ã§ããå¿
èŠãªãå Žåã¯ã颿°ã®äžã§æžãããšãå¯èœã§ãã
def use_numpy_temporarily():
import numpy as np
return np.array([1, 2, 3])
ãã ããèªã¿ããããä¿å®æ§ãèãããšãåºæ¬çã«ã¯å é ã«ãŸãšããŠèšè¿°ããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
3. ãµããã£ã¬ã¯ããªãä»ãã©ã«ãããã®ãã¡ã€ã«åŒã³åºã
Pythonã§ã¯ãã©ã«ãæ§æã«ãã£ãŠimportæ¹æ³ãå€ãã
Pythonã§ã¹ã¯ãªãããè€æ°ã®ãã©ã«ãã«åãããŠããå ŽåãåçŽãªimportæã§ã¯ãã¡ã€ã«ãèªã¿èŸŒããªãã±ãŒã¹ãåºãŠããŸãã
ãã®ãããªãšãã¯ãæ£ãããã¹æå®ãä»çµã¿ã®çè§£ãå¿
èŠã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããµããã£ã¬ã¯ããªãä»ã®ãã©ã«ãã«ãããã¡ã€ã«ã®é¢æ°ã»ã¯ã©ã¹ãåŒã³åºãæ¹æ³ããå ·äœäŸãšãšãã«è§£èª¬ããŸãã
ãµããã£ã¬ã¯ããªã®ãã¡ã€ã«ãã€ã³ããŒããã
ãŸãã以äžã®ãããªãã£ã¬ã¯ããªæ§æãæ³å®ããŸãã
project/
âââ main.py
âââ tools/
âââ formatter.py
formatter.py
ã«ãã颿°ã main.py
ããåŒã³åºãããå Žåãåºæ¬çã«ã¯ä»¥äžã®ããã«æžããŸãã
# tools/formatter.py
def shout(text):
return text.upper() + "!"
# main.py
from tools import formatter
print(formatter.shout("hello"))
ãŸãã¯ã颿°ã ãã䜿ãããå ŽåïŒ
from tools.formatter import shout
print(shout("hello"))
ãã®ããã«ããµããã£ã¬ã¯ããªã®ãã¡ã€ã«ãåŒã³åºãã«ã¯ããã£ã¬ã¯ããªå.ãã¡ã€ã«åããšããæ§æã§æå®ããŸãã
ããã±ãŒãžãšããŠæ±ãã«ã¯ init.py ãå¿ èŠãªå Žåããã
å€ãPythonïŒ3.2以åïŒãäžéšã®ããŒã«ã§ã¯ããµããã£ã¬ã¯ããªãã¢ãžã¥ãŒã«ïŒããã±ãŒãžïŒãšããŠèªèãããããã« __init__.py
ãå¿
èŠã§ãã
tools/
âââ __init__.py
âââ formatter.py
ãã®å Žåã空㮠__init__.py
ãã¡ã€ã«ãå
¥ããŠããã ãã§OKã§ããPython 3.3以éã§ã¯å¿
é ã§ã¯ãããŸããããå
¥ããŠãããšå®å¿ã§ãã
芪ãã£ã¬ã¯ããªãå åŒãã©ã«ãã®ãã¡ã€ã«ãã€ã³ããŒããã
ä»åºŠã¯ãå¥ãã©ã«ãã«ãããã¡ã€ã«ãåŒã³åºãå Žåã§ãã以äžã®ãããªæ§æãèããŠã¿ãŸãããïŒ
project/
âââ main.py
âââ modules/
âââ helper.py
ãã®å ŽåãPythonã¯ããã©ã«ãã§modules/
ãã£ã¬ã¯ããªãæ€çŽ¢å¯Ÿè±¡ãšããŠèŠãŠãããªããããæ¬¡ã®ãããªå¯Ÿçãå¿
èŠã§ãã
察çâ ïŒsys.pathã䜿ã£ãŠãã¹ã远å ãã
# main.py
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'modules'))
import helper
print(helper.some_function())
ãã®ããã«ããŠãPythonã®ã¢ãžã¥ãŒã«æ€çŽ¢ãã¹ã«ä»»æã®ãã©ã«ãã远å ã§ããŸãã
ç¹ã«ã¹ã¯ãªããããããžã§ã¯ãã®ã«ãŒãããå®è¡ããå Žåã«æå¹ã§ãã
察çâ¡ïŒPythonãå®è¡ããäœçœ®ã«æ³šæãã
Pythonã®importã¯å®è¡ããå ŽæïŒã«ã¬ã³ããã£ã¬ã¯ããªïŒã«åœ±é¿ãåããŸããmain.py
ã project/
ãã£ã¬ã¯ããªå
ã§å®è¡ããŠãããããããšã modules/
ããå®è¡ããŠãããã«ãã£ãŠãimportã®æåŠãå€ããããšããããŸãã
# æ£ããå®è¡æ¹æ³
cd project
python main.py
ãŸããVSCodeãªã©ã®ãšãã£ã¿ã§ã¯ããPythonãã¡ã€ã«ãšããŠå®è¡ããã¿ã³ã®åäœããã¹ã¯ãªããå®è¡ã®ãã¹ã«åœ±é¿ããŠããããšãããããæ³šæãå¿ èŠã§ãã
絶察ãã¹ vs çžå¯Ÿãã¹ã®éãã«æ³šæ
from modules.helper import func
ã®ãããªèšè¿°ã¯ 絶察ã€ã³ããŒãfrom ..modules import helper
ã®ãããªèšè¿°ã¯ çžå¯Ÿã€ã³ããŒã
çžå¯Ÿã€ã³ããŒãã¯äŸ¿å©ãªåé¢ãå®è¡ãã¡ã€ã«ã®äœçœ®ã«ãã£ãŠãšã©ãŒãåºãããã§ãã
åºæ¬çã«ã¯ã絶察ã€ã³ããŒãã䜿ãããšãæšå¥šãããŸãã
4. çžå¯Ÿã€ã³ããŒããšçµ¶å¯Ÿã€ã³ããŒãã®éããšäœ¿ãåã
Pythonã®importã«ã¯2çš®é¡ãã
Pythonã§å¥ãã¡ã€ã«ãåŒã³åºãéã«ã¯ãäž»ã«2ã€ã®æ¹æ³ããããŸãã
- 絶察ã€ã³ããŒãïŒabsolute importïŒ
- çžå¯Ÿã€ã³ããŒãïŒrelative importïŒ
ãã®2ã€ã¯ç®çã¯åãã§ãããæžãæ¹ã䜿ãã©ãããç°ãªããããç¶æ³ã«å¿ããŠæ£ãã䜿ãåããããšãéèŠã§ãã
絶察ã€ã³ããŒããšã¯ïŒ
絶察ã€ã³ããŒãã¯ããããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªããã®ãã¹ã§ã¢ãžã¥ãŒã«ãæå®ããæ¹æ³ã§ãããã£ãšãäžè¬çã§ãå€ãã®ãããžã§ã¯ãã§æšå¥šãããŠããèšæ³ã§ãã
from tools.formatter import shout
äžèšã®ããã«ãããã£ã¬ã¯ããªå.ãã¡ã€ã«å.颿°åããšãã圢åŒã§æå®ããŸãã
ã¡ãªãã
- èªã¿ãããæç¢º
- å®è¡ç°å¢ãå€ãã£ãŠãå®å®ããŠåäœãã
- ä»ã®éçºè ãæ§é ãææ¡ãããã
ãã¡ãªãã
- é·ããªãå ŽåãããïŒæ·±ãéå±€ã ãšç ©éïŒ
çžå¯Ÿã€ã³ããŒããšã¯ïŒ
çžå¯Ÿã€ã³ããŒãã¯ãçŸåšã®ãã¡ã€ã«äœçœ®ãåºæºã«ããŠãã¢ãžã¥ãŒã«ãæå®ããæ¹æ³ã§ããäž»ã«ããã±ãŒãžå ã§ã®å éšã¢ãžã¥ãŒã«ã®åŒã³åºãã«äœ¿ãããŸãã
from . import formatter # åããã£ã¬ã¯ããª
from ..tools import formatter # 1ã€äžã®ãã£ã¬ã¯ããª
.
ïŒãããïŒã¯çŸåšã®ãã£ã¬ã¯ããªãã..
ïŒããã2ã€ïŒã¯1ã€äžã®ãã£ã¬ã¯ããªã瀺ããŸãã
ã¡ãªãã
- ããã±ãŒãžå ã§ã®é¢ä¿ãæç¢º
- åäžããã±ãŒãžå ã§ã®ç§»åãæè»ã«ã§ãã
ãã¡ãªãã
- å®è¡ãã¡ã€ã«ã®äœçœ®ã«ãã£ãŠãšã©ãŒãåºããã
- å€éšããçŽæ¥å®è¡ããã¹ã¯ãªããã«ã¯äžåã
- è€éãªæ§æã§ã¯èªã¿ã¥ãããªã
ã©ã¡ãã䜿ãã¹ãïŒ å®åã§ã®äœ¿ãåãæ¹
äžè¬çã«ãPythonå ¬åŒããã¥ã¡ã³ãã§ã以äžã®ããã«æšå¥šãããŠããŸãïŒ
- ã©ã€ãã©ãªããããžã§ã¯ãã®å€éšããåŒã³åºãããšãåæãšããå ŽåïŒçµ¶å¯Ÿã€ã³ããŒã
- ããã±ãŒãžå éšã§ã®ç°¡åãªã¢ãžã¥ãŒã«é£æºïŒçžå¯Ÿã€ã³ããŒã
ãŸããåå¿è ãå°ãäžèŠæš¡ã®ãããžã§ã¯ãã§ã¯ã絶察ã€ã³ããŒããåºæ¬ã«ãããšãã©ãã«ãå°ãªããŠæžã¿ãŸãã
å®éã®ãšã©ãŒäŸïŒçžå¯Ÿã€ã³ããŒããåããªãïŒ
# example.pyïŒåäœã§å®è¡ïŒ
from .module import func # ValueError: attempted relative import beyond top-level package
äžèšã®ããã«ãçžå¯Ÿã€ã³ããŒãã¯åäœã®ã¹ã¯ãªãããšããŠå®è¡ãããšãšã©ãŒã«ãªãããšããããŸãã
ããã¯ãPythonããã®ãã¡ã€ã«ãããã±ãŒãžãšããŠèªèããŠããªãããã§ãã
ãã®å Žåã¯ã以äžã®ããã«ã¢ãžã¥ãŒã«ãšããŠå®è¡ããããšã§åé¿ã§ããŸãã
python -m package.module
çµè«ïŒåºæ¬ã¯çµ¶å¯Ÿã€ã³ããŒããç¶æ³ã«ãã£ãŠçžå¯Ÿã€ã³ããŒã
- åºæ¬ã¯çµ¶å¯Ÿã€ã³ããŒãïŒã·ã³ãã«ã§ãããããããå€éšããã®å©çšã«ã匷ãïŒ
- åäžããã±ãŒãžå ã§ã®åç §ãå€ãå Žåã«éã£ãŠçžå¯Ÿã€ã³ããŒãã䜿ã
çžå¯Ÿã€ã³ããŒãã¯äŸ¿å©ã§ãããã¹ã¯ãªããã®å®è¡æ¹æ³ãéçºç°å¢ã«ãã£ãŠäžå®å®ã«ãªããããããã䜿ãã©ãããèŠæ¥µããããšãéèŠã§ãã
5. ã¢ãžã¥ãŒã«ç®¡çã®ããã®ããã±ãŒãžå
è€æ°ã®ãã¡ã€ã«ãæŽçããã«ã¯ãããã±ãŒãžåããæå¹
Pythonã§èŠæš¡ã®å€§ããªããã°ã©ã ãéçºããå Žåããã¡ã€ã«ãé©åã«åå²ã»æŽçããããšãéåžžã«éèŠã§ãã
ãã®ãšã圹ç«ã€ã®ããããã±ãŒãžåããšããèãæ¹ã§ãã
ããã±ãŒãžãšã¯ãã¢ãžã¥ãŒã«ïŒPythonãã¡ã€ã«ïŒããã£ã¬ã¯ããªåäœã§ãŸãšãããã®ã§ããè€æ°ã®æ©èœãã°ã«ãŒãåããããšã§ãå¯èªæ§ã»ä¿å®æ§ã»åå©çšæ§ãå€§å¹ ã«åäžããŸãã
init.py ã®åœ¹å²ãšã¯ïŒ
ããã±ãŒãžãæ§æãããã£ã¬ã¯ããªã«ã¯ãååãšã㊠__init__.py
ãšãããã¡ã€ã«ã眮ãå¿
èŠããããŸãã
project/
âââ tools/
âââ __init__.py
âââ formatter.py
ãã® __init__.py
ã¯ããã®ãã£ã¬ã¯ããªããPythonã«ãšã£ãŠã®ããã±ãŒãžã§ããããšèªèãããããã®ç®å°ã§ãã
å
容ã¯ç©ºã§ãæ§ããŸãããã以äžã®ããã«ã¢ãžã¥ãŒã«ã®åæååŠçãæžããããå€éšã«å
¬éãã颿°ãæç€ºçã«æå®ããããšãã§ããŸãã
# tools/__init__.py
from .formatter import shout
ããã«ãããåŒã³åºãåŽã¯ä»¥äžã®ããã«ç°¡æœã«ã€ã³ããŒãã§ããŸãã
from tools import shout
ãã£ã¬ã¯ããªæ§æã®äŸ
å®éã«ããã±ãŒãžåããããããžã§ã¯ãã®æ§æäŸãèŠãŠã¿ãŸãããã
my_project/
âââ main.py
âââ tools/
âââ __init__.py
âââ formatter.py
âââ validator.py
ãã®å Žåãtools
以äžã®åã¢ãžã¥ãŒã«ã¯ãã¹ãŠ main.py
ããåŒã³åºãããšãã§ããŸãã
# main.py
from tools import formatter, validator
print(formatter.shout("Hello"))
print(validator.is_valid("12345"))
ããã±ãŒãžåã®ã¡ãªãããŸãšã
ã¡ãªãã | å 容 |
---|---|
管çããããæ§é | æ©èœããšã«ãã¡ã€ã«ãæŽçã§ããèŠéããè¯ããªã |
ååã®è¡çªãé¿ãããã | ã¢ãžã¥ãŒã«åã被ãããšãå°ãªããªã |
åå©çšã容æã«ãªã | ããã±ãŒãžããšå¥ã®ãããžã§ã¯ãã§ã䜿ãåãã |
åäœãã¹ããèªååããããã | ã¢ãžã¥ãŒã«åäœã§ãã¹ããåãããããªã |
Python 3.3以éã§ã¯ init.py ã¯çç¥å¯èœïŒ
Python 3.3 以éã§ã¯ã__init__.py
ããªããŠããã£ã¬ã¯ããªãããã±ãŒãžãšããŠæ±ããããã«ãªã£ãŠããŸãïŒImplicit Namespace PackageïŒã
ãã ããçŸå®çã«ã¯ä»¥äžã®çç±ã§ __init__.py
ãå
¥ããããšãæšå¥šãããŸãã
- ããŒã«ãã©ã€ãã©ãªã«ãã£ãŠã¯æªå¯Ÿå¿ã®ãã®ããã
- ããã±ãŒãžå ã§æç€ºçãªåæåŠçãè¡ãããããšããã
- å¯èªæ§ã»æç¢ºããäžããïŒäººéã«ãåãããããïŒ
ãã®ããã__init__.py
ã䜿ãã®ãä»ã§ãæ¥çæšæºã®ãã¹ããã©ã¯ãã£ã¹ãšèšããã§ãããã

6. ããããã€ã³ããŒããšã©ãŒãšãã®å¯ŸåŠæ³
importã«å€±æããçç±ã¯ããã¹ãšæ§é ã®çè§£äžè¶³ãå€ã
Pythonã§å¥ãã¡ã€ã«ãåŒã³åºãããšããéã«ããã¢ãžã¥ãŒã«ãèŠã€ãããªãããååãå®çŸ©ãããŠããªãããªã©ã®ãšã©ãŒã«æ©ãŸãããããšããçµéšã¯ãå€ãã®ååŠè ãéãéã§ãã
ããã§ã¯ãããããã€ã³ããŒããšã©ãŒãšãã®å¯ŸåŠæ³ãå ·äœçã«ç޹ä»ããŸãã
ModuleNotFoundErrorïŒã¢ãžã¥ãŒã«ãèŠã€ãããŸãã
ãšã©ãŒäŸïŒ
ModuleNotFoundError: No module named 'utils'
åå ãšå¯ŸåŠæ³ïŒ
ãã®ãšã©ãŒã¯ãæå®ãããã¢ãžã¥ãŒã«ãPythonã®æ€çŽ¢ãã¹ã«ååšããªããšãã«çºçããŸããããããåå ã¯ä»¥äžã®éãã§ãïŒ
- ã€ã³ããŒã察象ã®ãã¡ã€ã«ãåããã£ã¬ã¯ããªãé©åãªäœçœ®ã«ååšããŠããªã
- å®è¡ããŠãããã¡ã€ã«ã®å Žæãããã±ãŒãžæ§æãšãããŠãã
sys.path
ã«ã¢ãžã¥ãŒã«ã®ãã¹ãå«ãŸããŠããªã
å¯ŸåŠæ³ïŒ
- ã¢ãžã¥ãŒã«ãååšãããã¹ã確èªãã
- å®è¡ãããã£ã¬ã¯ããªãã«ãŒãã«çµ±äžãã
- å¿
èŠã«å¿ããŠ
sys.path.append()
ã§ãã¹ã远å
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'modules'))
ImportErrorïŒã¢ãžã¥ãŒã«ã¯ããããäžèº«ãèªã¿èŸŒããªã
ãšã©ãŒäŸïŒ
ImportError: cannot import name 'greet' from 'utils'
åå ãšå¯ŸåŠæ³ïŒ
ãã®ãšã©ãŒã¯ãã¢ãžã¥ãŒã«èªäœã¯èŠã€ãã£ãŠããããæå®ããã颿°ã»ã¯ã©ã¹ã»å€æ°ãªã©ãèŠã€ãããªãå Žåã«èµ·ããŸãã
äž»ãªåå ïŒ
- ãã¡ã€ã«åã®ã¿ã€ããã¹
- å®éã«ã¯ãã®ååã®é¢æ°ãã¯ã©ã¹ãååšããªã
__init__.py
ã«from .module import greet
ãšæžããŠããªããããå€ããèŠããªã
å¯ŸåŠæ³ïŒ
- ã¢ãžã¥ãŒã«å ã«æå®ããååãæ£ããååšããã確èª
- 倧æåã»å°æåã«æ³šæïŒPythonã¯åºå¥ããŸãïŒ
__init__.py
ã«å ¬é察象ãæç€ºãã
çžå¯Ÿã€ã³ããŒãã®ãšã©ãŒïŒValueErrorãImportError
ãšã©ãŒäŸïŒ
ValueError: attempted relative import beyond top-level package
åå ïŒ
ãã®ãšã©ãŒã¯ãçžå¯Ÿã€ã³ããŒãã䜿ã£ãŠãããã¡ã€ã«ãçŽæ¥å®è¡ãããšãã«çºçããŸããPythonã¯ãã®ãã¡ã€ã«ãåç¬ã§å®è¡ããå Žåããããããã±ãŒãžã®äžéšã§ãããšèªèããŸããã
å¯ŸåŠæ³ïŒ
- çžå¯Ÿã€ã³ããŒãã䜿ãå Žåã¯ãã¢ãžã¥ãŒã«ãšããŠå®è¡ããå¿ èŠããããŸãã
# NGïŒçŽæ¥å®è¡
python script.py
# OKïŒã¢ãžã¥ãŒã«ãšããŠå®è¡
python -m package.script
ã€ã³ããŒããšã©ãŒåé¿ã®ããã®ãã¹ããã©ã¯ãã£ã¹
ãã€ã³ã | 解説 |
---|---|
ã¹ã¯ãªããã®å®è¡å Žæãçµ±äž | project/ ãã«ãŒããšããVSCodeçã§ããäœæ¥ãã£ã¬ã¯ããªããèšå® |
importæã¯çµ¶å¯Ÿãã¹ã§æžã | ç¹ã«åå¿è ã¯çžå¯Ÿã€ã³ããŒããé¿ããæ¹ãå®å š |
__init__.py ã䜿ã£ãŠæç€ºçã«æ§æãã | ããã±ãŒãžèªèã確å®ã«ãªã |
sys.pathãäžæçã«è¿œå ããå Žå㯠os.path ã§åçã«æå® | ç°å¢ã®éãã«ããåäœäžè¯ãåé¿ã§ãã |
7. å®è·µã³ãŒãäŸïŒå¥ãã¡ã€ã«ã®é¢æ°ãåŒã³åºããŠäœ¿ã£ãŠã¿ãã
å®éã«æãåãããŠçè§£ããã
ãããŸã§ã®è§£èª¬ã§ãPythonã§å¥ãã¡ã€ã«ãåŒã³åºãããã®åºæ¬çãªç¥èã¯èº«ã«ã€ãããšæããŸãã
ãããããçè§£ããšã䜿ãããã¯å¥ç©ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãå®éã«æãåãããªããã
- ãã¡ã€ã«ã®åå²
- importæã®äœ¿ãæ¹
- 颿°ã®åŒã³åºãæ¹
ãåŠã³ãŸãããã
ã¹ããã1ïŒåŒã³åºã颿°ãå®çŸ©ãããã¡ã€ã«ãäœæãã
ãŸãã¯ãåŒã³åºãããåŽã®Pythonãã¡ã€ã«ãäœããŸãã
project/
âââ main.py
âââ utils.py
utils.py
ã«ãç°¡åãªé¢æ°ãå®çŸ©ããŠãããŸãã
# utils.py
def greet(name):
return f"ããã«ã¡ã¯ã{name}ããïŒ"
ãã®ãã¡ã€ã«ã«ã¯ãgreet()
ãšããååã®é¢æ°ãå®çŸ©ãããŠããŸãã
ååãåŒæ°ã«åããæšæ¶ã®ã¡ãã»ãŒãžãè¿ãã·ã³ãã«ãªé¢æ°ã§ãã
ã¹ããã2ïŒåŒã³åºãå ã®ãã¡ã€ã«ããimportãã
次ã«ãã¡ã€ã³ã®åŠçãè¡ã main.py
ãäœæããŸãã
# main.py
import utils
message = utils.greet("äœå·")
print(message)
ãã®ããã«ãutils
ã¢ãžã¥ãŒã«ã import
ãããã®äžã® greet()
颿°ãåŒã³åºããŸãã
ããã§ã¯ãã¢ãžã¥ãŒã«å + 颿°åãšãã圢åŒã§äœ¿ã£ãŠããŸãã
ã¹ããã3ïŒå®è¡ããŠçµæã確èªãã
次ã«ãã¿ãŒããã«ãã³ãã³ãããã³ãããã main.py
ãå®è¡ããŠã¿ãŸãããã
python main.py
åºåçµæïŒ
ããã«ã¡ã¯ãäœå·ããïŒ
ç¡äºã«å¥ãã¡ã€ã«ã®é¢æ°ãåŒã³åºãããæå³ããã¡ãã»ãŒãžã衚瀺ãããŸããã
å¥ã®importæ¹æ³ã詊ããŠã¿ãïŒfrom-importïŒ
以äžã®ããã«æžãæããããšã§ãããç°¡æœã«é¢æ°ãåŒã³åºãããšãå¯èœã§ãã
# main.pyïŒæ¹è¯çïŒ
from utils import greet
print(greet("äœå·"))
ãã®æ¹æ³ãªããutils.greet()
ã§ã¯ãªããgreet()
ãšã·ã³ãã«ã«æžããŸãã
ãªããè€æ°ã®é¢æ°ã䜿ãããå Žåã¯ãã«ã³ãåºåãã§åæããŸãããã
ã³ãŒããæŽçããããã®ã¯ã³ãã€ã³ã
utils.py
ã®ãããªå ±éåŠçã¯ããmodulesãããhelpersããªã©ã®ãã£ã¬ã¯ããªã«ãŸãšãããšç®¡çãããããªããŸãã- å®åã¬ãã«ã§ã¯ãã£ã¬ã¯ããªæ§æãæŽããããšããèªã¿ãããã»ä¿å®æ§ã®åäžã«ã€ãªãããŸãã
8. FAQïŒPythonã®å¥ãã¡ã€ã«åŒã³åºãã«é¢ãããããã質å
Q1. import
ãš from ... import ...
ã®éãã¯äœã§ããïŒ
A.
ã©ã¡ããå¥ãã¡ã€ã«ãèªã¿èŸŒãããã®æ¹æ³ã§ãããåŒã³åºãæ¹ã«éãããããŸãã
import module
ïŒã¢ãžã¥ãŒã«å šäœãèªã¿èŸŒã¿ãmodule.function()
ã®ããã«äœ¿ããŸããfrom module import function
ïŒç¹å®ã®é¢æ°ãã¯ã©ã¹ã ããèªã¿èŸŒã¿ãfunction()
ã®ããã«çŽæ¥åŒã³åºããŸãã
è€æ°ã®é¢æ°ã䜿ãå Žåããæç€ºçã«ã©ã®é¢æ°ã䜿ã£ãŠããããèŠããããšã㯠from ... import ...
ã䟿å©ã§ãã
Q2. çžå¯Ÿã€ã³ããŒããããŸãåããŸããããªãã§ããïŒ
A.
çžå¯Ÿã€ã³ããŒãã¯ãã¢ãžã¥ãŒã«ãåç¬ã§å®è¡ãããšãšã©ãŒã«ãªãå ŽåããããŸããPythonã¯ãã®ãã¡ã€ã«ãããã±ãŒãžã®äžéšãšããŠèªèããªãããã§ãã
以äžã®ããã«ãã¢ãžã¥ãŒã«ãšããŠå®è¡ããããšã§åé¿ã§ããŸãã
python -m package.module
ãŸããåå¿è ã®ãã¡ã¯çµ¶å¯Ÿã€ã³ããŒãã®äœ¿çšãããããããŸããå®å®æ§ãé«ãããã©ãã«ãèµ·ãã«ããããã§ãã
Q3. Pythonã§ãã¡ã€ã«æ§æãã©ãããã°ãããè¿·ããŸã
A.
åºæ¬çã«ã¯ä»¥äžã®ããã«ãæ©èœããšã«ãã£ã¬ã¯ããªãã¢ãžã¥ãŒã«ãåããæ§æãæšå¥šãããŸãã
project/
âââ main.py
âââ utils/
â âââ __init__.py
â âââ formatter.py
â âââ validator.py
âââ config/
âââ settings.py
- è€æ°ã®é¢æ°ãå«ãå Žåã¯ãã¡ã€ã«ãåå²
- å ±éåŠçã¯ãutilsãããcommonããªã©ã«ãŸãšãã
- ãã£ã¬ã¯ããªåäœã§ããã±ãŒãžåããããšã§æ¡åŒµãããããªããŸã
Q4. __init__.py
ã¯å¿
ãå¿
èŠã§ããïŒ
A.
Python 3.3以éã§ã¯ã__init__.py
ããªããŠãããã±ãŒãžãšããŠæ©èœããããã«ãªã£ãŠããŸãïŒImplicit Namespace PackageïŒã
ãã ãã以äžã®çç±ã§ä»ã§ã䜿çšãæšå¥šãããŸãã
- æç€ºçã«ããã±ãŒãžã§ããããšãåãã
- å€ãããŒã«ãäžéšã®ãšãã£ã¿ã§ã¯å¿ é
- åæååŠçãå ¬é颿°ã®èšå®ã«äœ¿ãã
éçºããŒã ãåçšéçºã§ãåºãæ¡çšãããŠããã®ã§ãåºæ¬çã«ã¯åžžã«èšçœ®ããæ¹ãå®å šã§ãã
Q5. importæã«æ¥æ¬èªãç¹æ®æåãå«ããã¡ã€ã«åã¯äœ¿ããŸããïŒ
A.
åºæ¬çã«ã¢ãžã¥ãŒã«åïŒãã¡ã€ã«åïŒã¯è±æ°åãšã¢ã³ããŒã¹ã³ã¢ïŒ_ïŒã®ã¿ã䜿ãã¹ãã§ãã
ããšãã°ä»¥äžã®ãããªãã¡ã€ã«åã¯NGã§ãïŒ
- â
颿°.py
- â
utils-æ¹.py
Pythonã§ã¯ããã¡ã€ã«åããã®ãŸãŸã¢ãžã¥ãŒã«åã«ãªããããç¹æ®æåããã€ãã³ã¯ãšã©ãŒã®åå ã«ãªããŸãã
æ£ããåœåäŸïŒ
- â
utils.py
- â
data_handler.py
9. ãŸãšãïŒimportãçè§£ããã°Pythonã¯ãã£ãšèªç±ã«ãªã
æ¬èšäºã§åŠãã ããšã®æ¯ãè¿ã
ãããŸã§ã®èšäºã§ã¯ã次ã®ãããªå å®¹ãæ®µéçã«è§£èª¬ããŠããŸããïŒ
- ãªãå¥ãã¡ã€ã«ãåŒã³åºãã®ãïŒ
ãâ ã³ãŒããæŽçãã䜿ããŸãããããã«ãããã - åºæ¬ã®importæã®äœ¿ãæ¹
ãâimport
/from ... import ...
ã®äœ¿ãåã - ãµããã£ã¬ã¯ããªãå¥ãã©ã«ãã®ã¢ãžã¥ãŒã«ã®èªã¿èŸŒã¿æ¹
ãâ ãã¹ã®æ±ãã__init__.py
ã®å¿ èŠæ§ãå«ããŠçè§£ - 絶察ã€ã³ããŒããšçžå¯Ÿã€ã³ããŒãã®éã
ãâ åå¿è ã«ã¯çµ¶å¯Ÿã€ã³ããŒãããããã - ããããã€ã³ããŒããšã©ãŒãšãã®å¯ŸåŠæ³
ãâ ãšã©ãŒåå ã®å€ãã¯å®è¡ãã¹ãšæ§æãã¹ - å®è·µã³ãŒãã§ã®ç¢ºèªãšFAQã§ã®è£è¶³
ãâ çè«ïŒå®è·µïŒãããã質åãŸã§ãã©ããŒ
importã䜿ãããªãã°ãPythonã®äžçãäžæ°ã«åºãã
importã®ä»çµã¿ãçè§£ããæ£ãã䜿ããããã«ãªããšã以äžã®ãããªã¡ãªãããåŸãããŸãïŒ
- å€§èŠæš¡ãªãããžã§ã¯ãã§ãè¿·ããªãæ§æãäœãã
- å ±éåŠçããŸãšããŠãä¿å®ãæ¹ä¿®ã楜ã«ãªã
- ä»ã®äººãæžããã³ãŒããçè§£ãããããªã
- ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ïŒDjangoãFlaskãFastAPIãªã©ïŒãèªç¶ã«æ±ããããã«ãªã
ã€ãŸããimportã®çè§£ã¯ãååŠè ããäžæ©æãåºãããã®ç»ç«éãšãèšããã§ãããã
ãããã«
Pythonã¯ã·ã³ãã«ãªææ³ãšæè»æ§ãé
åã§ããããã®åãèšèšåããåãããèšèªã§ããããŸãã
å¥ãã¡ã€ã«ã®åŒã³åºãæ¹ãæ£ããçè§£ããã¢ãžã¥ãŒã«ãããã±ãŒãžã䜿ãããªããããã«ãªãããšã§ãããªãã®ã³ãŒãã¯æ Œæ®µã«é²åããŸãã
æ¬èšäºããããªãã®PythonåŠç¿ãå®åéçºã®äžå©ã«ãªãã°å¹žãã§ãã
ãã²ãæãåãããªãããèªåãªãã®ã¢ãžã¥ãŒã«æ§æã詊ããŠã¿ãŠãã ããã