ماژول و pip
قدرت اصلی پایتون در اکوسیستم عظیم آن است: بیش از ۴۰۰هزار پکیج روی PyPI! در این فصل یاد میگیریم چطور از ماژولهای استاندارد، پکیجهای خارجی با pip و محیط مجازی استفاده کنیم.
قدرت اصلی پایتون در اکوسیستم عظیم آن است: بیش از ۴۰۰هزار پکیج روی PyPI! در این فصل یاد میگیریم چطور از ماژولهای استاندارد، پکیجهای خارجی با pip و محیط مجازی استفاده کنیم.
دستور import
# import کامل ماژول
import math
print(math.pi) # 3.141592653589793
print(math.sqrt(16)) # 4.0
print(math.factorial(5)) # 120
# import خاص
from math import pi, sqrt
print(pi) # حالا بدون math.
print(sqrt(25)) # 5.0
# import همه (توصیه نمیشود)
from math import *
print(cos(0)) # 1.0 - اما کلاسنما را شلوغ میکند
# import با نام مستعار
import math as m
print(m.pi)
import datetime as dt
now = dt.datetime.now()
ماژولهای استاندارد مهم
math – ریاضی
import math
print(math.pi) # 3.14159...
print(math.e) # 2.71828... (عدد نپر)
print(math.inf) # بینهایت
print(math.sqrt(16)) # 4.0
print(math.pow(2, 10)) # 1024.0
print(math.log(100, 10)) # 2.0
print(math.log2(8)) # 3.0
print(math.ceil(3.2)) # 4 گرد به بالا
print(math.floor(3.8)) # 3 گرد به پایین
print(math.gcd(12, 18)) # 6 ب.م.م
# مثلثاتی (با رادیان)
print(math.sin(math.pi/2)) # 1.0
print(math.degrees(math.pi)) # 180.0
print(math.radians(180)) # pi
random – تصادفی
import random
# عدد اعشاری بین 0 و 1
print(random.random()) # مثل 0.7351...
# عدد صحیح در بازه
print(random.randint(1, 10)) # شامل هر دو 1 و 10
print(random.randrange(0, 100, 5)) # ضرایب 5
# انتخاب از لیست
fruits = ["سیب", "موز", "پرتقال", "هلو"]
print(random.choice(fruits)) # یکی تصادفی
print(random.choices(fruits, k=3)) # 3 تا (با تکرار)
print(random.sample(fruits, 2)) # 2 تا (بدون تکرار)
# مخلوط کردن
nums = [1, 2, 3, 4, 5]
random.shuffle(nums)
print(nums)
# seed برای نتایج قابل تکرار
random.seed(42)
print(random.random()) # همیشه همان نتیجه با seed یکسان
datetime – تاریخ و زمان
from datetime import datetime, date, time, timedelta
# الان
now = datetime.now()
print(now) # 2026-05-01 14:30:00.123456
# اجزا
print(now.year) # 2026
print(now.month) # 5
print(now.day) # 1
print(now.hour) # 14
# امروز
today = date.today()
print(today)
# ساخت تاریخ خاص
birthday = date(1990, 3, 21)
print(birthday)
# اختلاف تاریخ
diff = today - birthday
print(diff.days) # تعداد روزها
# اضافه کردن
tomorrow = today + timedelta(days=1)
next_week = today + timedelta(weeks=1)
two_hours_later = now + timedelta(hours=2)
# قالببندی
print(now.strftime("%Y-%m-%d %H:%M")) # 2026-05-01 14:30
print(now.strftime("%A, %d %B %Y")) # Friday, 01 May 2026
# تبدیل رشته به تاریخ
date_str = "2026-05-01"
parsed = datetime.strptime(date_str, "%Y-%m-%d")
os – سیستم عامل
import os
# مسیر جاری
print(os.getcwd())
# لیست فایلها
files = os.listdir(".")
print(files)
# ساخت پوشه
os.makedirs("data/cache", exist_ok=True)
# بررسی وجود
print(os.path.exists("file.txt"))
print(os.path.isfile("file.txt"))
print(os.path.isdir("data"))
# اطلاعات مسیر
path = "/home/ali/project/file.txt"
print(os.path.dirname(path)) # /home/ali/project
print(os.path.basename(path)) # file.txt
print(os.path.splitext(path)) # ('/home/ali/project/file', '.txt')
# ساخت مسیر cross-platform
config_path = os.path.join("data", "config", "settings.json")
# متغیرهای محیطی
print(os.environ.get("HOME"))
print(os.environ.get("PATH"))
os.environ["MY_VAR"] = "value"
sys – سیستم پایتون
import sys
print(sys.version) # نسخه پایتون
print(sys.platform) # win32, linux, darwin
# آرگومانهای خط فرمان
# python script.py arg1 arg2
print(sys.argv) # ['script.py', 'arg1', 'arg2']
# خروج از برنامه
# sys.exit(0) # 0 موفق، عدد دیگر خطا
# stdin / stdout / stderr
sys.stdout.write("بدون newlinen")
sys.stderr.write("پیام خطاn")
json – کار با JSON
import json
# تبدیل dict به رشته JSON
data = {"name": "علی", "age": 25, "skills": ["Python", "Django"]}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
# تبدیل JSON به dict
parsed = json.loads(json_str)
print(parsed["name"])
# نوشتن در فایل
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# خواندن از فایل
with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
pip – نصب پکیج
pip ابزار رسمی پایتون برای نصب پکیجها از PyPI است:
# بررسی نسخه pip
pip --version
# بهروزرسانی pip
python -m pip install --upgrade pip
# نصب یک پکیج
pip install requests
# نصب نسخه خاص
pip install django==4.2
# نصب با محدوده نسخه
pip install "django>=4.0,<5.0"
# بهروزرسانی پکیج
pip install --upgrade requests
# حذف پکیج
pip uninstall requests
# لیست پکیجهای نصب شده
pip list
# جزئیات یک پکیج
pip show django
# جستجو (در PyPI)
pip search keyword
requirements.txt
فایل استاندارد برای فهرست پکیجهای پروژه:
# requirements.txt
django==4.2.10
requests>=2.31.0
python-dotenv==1.0.0
mysql-connector-python==8.3.0
Pillow>=10.0.0
pandas
numpy
# نصب همه با یک دستور
pip install -r requirements.txt
# تولید requirements از پکیجهای نصب شده
pip freeze > requirements.txt
محیط مجازی (Virtual Environment)
چرا venv؟ هر پروژه باید پکیجهای خاص خودش را داشته باشد، بدون تداخل:
# ساخت venv در پوشه پروژه
python -m venv .venv
# فعالسازی - ویندوز
.venvScriptsactivate
# فعالسازی - لینوکس/مک
source .venv/bin/activate
# حالا نصبها در venv انجام میشود
pip install django
# غیرفعال
deactivate
برای هر پروژه پایتون، یک venv جداگانه بسازید. در .gitignore پوشه .venv را قرار دهید. در VS Code، Python interpreter را روی .venv/Scripts/python.exe تنظیم کنید.
ماژولهای شخصی
هر فایل .py یک ماژول است. میتوانید توابعتان را در فایل جداگانهای بگذارید:
# فایل: utils.py
def greet(name):
return f"سلام {name}!"
def add(a, b):
return a + b
PI = 3.14159
# فایل: main.py
import utils
print(utils.greet("علی"))
print(utils.add(5, 3))
print(utils.PI)
# یا
from utils import greet, add
print(greet("زهرا"))
__name__ == “__main__”
# فایل: calculator.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
# این بخش فقط وقتی فایل مستقیم اجرا شود اجرا میشود
# نه وقتی import شود
if __name__ == "__main__":
print("اجرای مستقیم")
print(add(2, 3))
print(multiply(4, 5))
پکیجها (پوشه ماژولها)
myproject/
__init__.py # یک فایل خالی این را پکیج میکند
main.py
utils/
__init__.py
math_helpers.py
string_helpers.py
models/
__init__.py
user.py
# در main.py
from utils.math_helpers import add
from models.user import User
پکیجهای محبوب
| پکیج | کاربرد |
|---|---|
requests |
کار با HTTP و API |
django / flask |
توسعه وب |
numpy / pandas |
تحلیل داده |
matplotlib / plotly |
نمودار |
Pillow |
پردازش تصویر |
beautifulsoup4 |
Web Scraping |
jdatetime |
تاریخ شمسی |
python-dotenv |
متغیرهای محیطی |
pytest |
تست |
black / ruff |
فرمتدهی کد |
تمرین فصل
random، یک عدد بین ۱ تا ۱۰۰ تصادفی بسازد و بازی حدس عدد را اجرا کند.
datetime، تابعی بنویسید که سال تولد بگیرد و سن کنونی، روز تولد بعدی و تعداد روزهای زندگی را محاسبه کند.
helpers.py با چند تابع کاربردی بسازید و در فایل main.py آن را import و استفاده کنید.
requests را نصب کنید و یک requirements.txt تولید کنید.
جمعبندی
- دستور
importبا چند شکل مختلف - ماژولهای استاندارد:
math،random،datetime،os،sys،json - pip برای نصب پکیج از PyPI
- requirements.txt برای مدیریت وابستگیها
- محیط مجازی (venv) – الزامی برای پروژه حرفهای
- ساخت ماژول و پکیج شخصی
__name__ == "__main__"