νμ΄μ¬ λͺ¨λκ³Ό ν¨ν€μ§μ λͺ¨λ κ²
λͺ¨λ
λͺ¨λμ λ€λ₯Έ νμΌμμ μ μν λ³μ λ° ν¨μλ€μ λΆλ¬μ€λ κ²μ λ»ν©λλ€.
import mod
print(mod.add(3,4))
from λͺ¨λ_μ΄λ¦ import λͺ¨λ_ν¨μ ννλ‘ λͺ¨λ μ΄λ¦ μμ΄ ν¨μ μ΄λ¦μΌλ‘λ§ νΈμΆν μ μμ΅λλ€.
from mod import add
add(3,4) # λͺ¨λ μ΄λ¦ μμ΄ ν¨μ μ΄λ¦μΌλ‘λ§ μ¬μ©
from λͺ¨λ_μ΄λ¦ import * ννλ‘ ν΄λΉ λͺ¨λ μμ λͺ¨λ ν¨μλ₯Ό νΈμΆν μ μμ΅λλ€. νμ§λ§ νΈνλ€κ³ import *λ‘λ μ°μ§ μλ κ²μ΄ μ’μ΅λλ€.(νμ λͺ μμ νΈμΆμ΄ κ°μ₯ μ’μ ννμ λλ€)
from mod import *
add(3,4) # import *λ mod νμΌμ λͺ¨λ ν¨μλ₯Ό μ¬μ©ν μ μμ
if __name __ = “main”
# mod.py
def add(a, b):
return a+b
def sub(a, b):
return a-b
print(add(1, 4))
print(sub(4, 2))
# test.py
import mod
pass
5
2 # modλ₯Ό importλ§ νλλΌλ printκ° μ€νλ¨
mod λͺ¨λμ importλ§ νλλΌλ printκ° μ€νλκΈ° λλ¬Έμ μλμ κ°μ΄ μμ ν©λλ€.
# mod.py
def add(a, b):
return a+b
def sub(a, b):
return a-b
if __name__ = "__main__": # mod.pyλ₯Ό μ€νν λλ§ ifλ‘ λ€μ΄μ΄(importλ μλ€μ΄μ΄)
print(add(1, 4))
print(sub(4, 2))
λͺ¨λ include path μΆκ°νκΈ°
μ¬νκΉμ§λ νΉμ λͺ¨λμ μ¬μ©νλ €λ©΄ ν΄λΉ λλ ν°λ¦¬λ‘ μ΄λν νμμΌ μ¬μ©ν μ μμμ΅λλ€. λͺ¨λμ μ μ₯ν λλ ν°λ¦¬λ‘ μ΄λνμ§ μκ³ λΆλ¬μμ μ¬μ©νλ λ°©λ²μ μμλ³΄κ² μ΅λλ€.
- sys.path.append μ¬μ©
import sys
sys.path
sys.pathλ‘ νμ΄μ¬ λΌμ΄λΈλ¬λ¦¬κ° μ€μΉλμ΄ μλ λλ ν°λ¦¬λ₯Ό νμΈν μ μμ΅λλ€.
μ¬κΈ°μ νμ¬ λλ ν°λ¦¬λ₯Ό μΆκ°νλ©΄ μ΄λμλ νμ¬ λλ ν°λ¦¬μ λͺ¨λμ μ¬μ©ν μ μμ΅λλ€.
sys.path.append("/home/groundp/my-module")
1. PYTHONPATH νκ²½ λ³μ μ¬μ©
set PYTHONPATH="/home/groundp/my-module" # windows
export PYTHONPATH="/home/groundp/my-module" # Unix, Mac
import mod
print(mod.add(3,4))
sys보λ€λ PYTHONPATHλ₯Ό μ°λ κ²μ΄ μ’μ΅λλ€.
ν¨ν€μ§
- νμ΄μ¬μμ λͺ¨λμ νλμ νμΌμ λλ€.
- νμ΄μ¬μμ ν¨ν€μ§λ λͺ¨λμ λͺ¨μλμ λλ ν 리 ꡬ쑰μ
λλ€.
- __init __.py νμΌμ΄ μμ΄μΌ ν¨ν€μ§λ‘ μΈμν©λλ€.
- ν¨ν€μ§μμ μ΄λ€ λͺ¨λμ μΈλΆμ λ ΈμΆμν¬μ§ κ²°μ ν λ, κ° λͺ¨λμμ all λ³μλ₯Ό μ€μ νμ¬ λͺ μμ μΌλ‘ μ§μ ν μ μμ΅λλ€.
# __init__.py
__all__ = ['module1', 'module2']
νμ΄μ¬μμ ν¨ν€μ§λ λͺ¨λμ ν¬ν¨νλ λλ ν λ¦¬λ‘ κ΅¬μ±λ ꡬ쑰μ
λλ€. ν¨ν€μ§λ μ½λμ λͺ¨λμ μ‘°μ§ννκ³ μ΄λ¦ μΆ©λμ λ°©μ§νλ©°, μ½λλ₯Ό λ
Όλ¦¬μ μΌλ‘ κ·Έλ£Ήννμ¬ μ μ§λ³΄μμ±μ ν₯μμν€λλ° μ¬μ©λ©λλ€. κ°λ¨ν μμ λ‘ μ€λͺ
νκ² μ΅λλ€.
ν¨ν€μ§μ ꡬ쑰
ν¨ν€μ§ λλ ν 리 μμ±:
# module1.py
def func1():
print("Function 1 from module1")
# module2.py
def func2():
print("Function 2 from module2")
κ° λͺ¨λμ λ΄μ©:
mypackage/
βββ __init__.py
βββ module1.py
βββ module2.py
ν¨ν€μ§λ₯Ό μ¬μ©νλ μ€ν¬λ¦½νΈ:
# main_script.py
from mypackage import module1, module2
module1.func1()
module2.func2()
ν¨ν€μ§λ μ μ¬μ©ν κΉ?
ν¨ν€μ§λ₯Ό ν΅ν λͺ¨λ κ·Έλ£Ήν: ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ κ΄λ ¨λ λͺ¨λμ λ Όλ¦¬μ μΌλ‘ κ·Έλ£Ήνν μ μμ΅λλ€. μ΄λ κ² νλ©΄ μ½λμ κ΅¬μ‘°κ° ν₯μλμ΄ μ΄ν΄νκΈ° μ¬μμ§λλ€.
λ€μμ€νμ΄μ€ λΆλ¦¬: ν¨ν€μ§λ λ€μμ€νμ΄μ€λ₯Ό μ 곡νμ¬ λͺ¨λ κ°μ μ΄λ¦ μΆ©λμ λ°©μ§ν©λλ€. λͺ¨λ μ΄λ¦μ΄ κ²ΉμΉλλΌλ ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ κ° ν¨ν€μ§ λ΄μμλ μ΄λ¦ μΆ©λμ΄ λ°μνμ§ μμ΅λλ€.
κ°λ μ± λ° μ μ§λ³΄μμ± ν₯μ: μ½λλ₯Ό ν¨ν€μ§λ‘ ꡬμ±νλ©΄ μ½λμ μΌλΆλ₯Ό λ μμ λΆλΆμΌλ‘ λλμ΄ κ°λ μ±μ ν₯μμν€κ³ , μ μ§λ³΄μμ±μ λμΌ μ μμ΅λλ€.
μ¬μ© ν
- __init__.py νμΌ:
- ν¨ν€μ§ λλ ν 리μ __init__.py νμΌμ λ§λ€μ΄μΌ ν©λλ€. μ΄ νμΌμ ν¨ν€μ§λ₯Ό νμ΄μ¬μμ ν¨ν€μ§λ‘ μΈμνκ² λ§λλλ€. μ΄ νμΌμ λΉμ΄ μμ΄λ λμ§λ§, ν¨ν€μ§ μ΄κΈ°ν μ½λλ₯Ό ν¬ν¨ν μλ μμ΅λλ€.
- μλ κ²½λ‘ μν¬νΈ μ¬μ©:
# module2.pyμμ module1.pyλ₯Ό μν¬νΈν λ from . import module1
- μλ κ²½λ‘ μν¬νΈλ₯Ό μ¬μ©νμ¬ λͺ¨λ κ°μ κ΄κ³λ₯Ό λͺ μμ μΌλ‘ λνλΌ μ μμ΅λλ€. μ΄λ μ½λ μ΄λ λ° μ μ§λ³΄μλ₯Ό λ μ½κ² λ§λλλ€.
- __all__ νμ©:
μ΄λ κ² νλ©΄ ν¨ν€μ§λ₯Ό μν¬νΈν λ λͺ μν λͺ¨λλ§ μ¬μ©ν μ μμ΅λλ€.# __init__.py __all__ = ['module1', 'module2']
- ν¨ν€μ§μμ μ΄λ€ λͺ¨λμ μΈλΆμ λ ΈμΆμν¬μ§ κ²°μ ν λ, κ° λͺ¨λμμ __all__ λ³μλ₯Ό μ€μ νμ¬ λͺ μμ μΌλ‘ μ§μ ν μ μμ΅λλ€.
μ΄λ¬ν ꡬ쑰λ₯Ό μ¬μ©νλ©΄ μ½λλ₯Ό 체κ³μ μΌλ‘ ꡬμ±νκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λ€ μ μμ΅λλ€.
μ€μ μμ λ§λ³΄κΈ°
λ€μμ νλΌμ€ν¬ μΉ μ ν리μΌμ΄μ ꡬ쑰 μμμ λλ€.
mywebapp/
βββ __init__.py
βββ core/
β βββ __init__.py
β βββ authentication.py
β βββ database.py
β βββ utils.py
βββ web/
β βββ __init__.py
β βββ routes.py
β βββ templates/
β βββ index.html
βββ main.py
1. mywebapp/__init__.py:
# mywebapp/__init__.py
from .core import *
from .web import *
2. mywebapp/core/__init__.py:
# mywebapp/core/__init__.py
from .authentication import authenticate_user
from .database import connect_to_database
from .utils import *
3. mywebapp/core/authentication.py:
# mywebapp/core/authentication.py
def authenticate_user(username, password):
# Authentication logic
return True # For simplicity, always return True
4. mywebapp/core/database.py:
# mywebapp/core/database.py
def connect_to_database():
# Database connection logic
return "Connected to database" # For simplicity, return a string
5. mywebapp/core/utils.py:
# mywebapp/core/utils.py
def generate_random_key():
# Utility function to generate a random key
pass
6. mywebapp/web/__init__.py:
# mywebapp/web/__init__.py
from .routes import *
7. mywebapp/web/routes.py:
# mywebapp/web/routes.py
from flask import Flask, render_template
from ..core import authenticate_user, connect_to_database, generate_random_key
app = Flask(__name__)
@app.route('/')
def index():
# Web route logic
user_authenticated = authenticate_user("user", "password")
db_connection = connect_to_database()
random_key = generate_random_key()
return render_template('index.html', auth=user_authenticated, db=db_connection, key=random_key)
8. mywebapp/web/templates/index.html:
<!-- mywebapp/web/templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Web App</title>
</head>
<body>
<h1>Welcome to my web app</h1>
<p>Authentication: {{ auth }}</p>
<p>Database Connection: {{ db }}</p>
<p>Random Key: {{ key }}</p>
</body>
</html>
9. mywebapp/main.py:
# mywebapp/main.py
from mywebapp.web.routes import app
if __name__ == '__main__':
app.run(debug=True)
μ΄ νλ‘μ νΈμμλ core ν¨ν€μ§μλ λ°μ΄ν°λ² μ΄μ€ μ°κ²°, μ¬μ©μ μΈμ¦ λ° μ νΈλ¦¬ν°μ κ°μ ν΅μ¬ κΈ°λ₯μ΄ λ€μ΄ μμ΅λλ€. web ν¨ν€μ§μλ Flask μΉ μ ν리μΌμ΄μ μ λΌμ°νΈκ° μ μλμ΄ μμ΅λλ€. μ΄ κ΅¬μ‘°λ₯Ό μ¬μ©νλ©΄ νλ‘μ νΈμ λ€μν λΆλΆμ λͺ¨λννκ³ λΆλ¦¬νμ¬ κ΄λ¦¬ν μ μμ΅λλ€. λν κ° λͺ¨λμ λ 립μ μΌλ‘ ν μ€νΈνκ±°λ μ¬μ¬μ©ν μ μμ΅λλ€.
μ°Έκ³ : μ ν ν¬ νμ΄μ¬