رفتن به محتوا

---

title: از ارور fcntl تا یه محیط لینوکس واقعی روی Windows

slug: wsl-setup

lang: fa

published: 2026-10-31

words: 436

lines: 92

size: 3.7 KB

read: 3 min read

reel: لینوکس رو آوردم پیش خودم، توی Windows

---

از ارور fcntl تا یه محیط لینوکس واقعی روی Windows

لینوکس رو آوردم پیش خودم، توی Windows

بک‌اند سایتم روی Windows بالا نمی‌اومد. همون کد روی سرور سالم کار می‌کرد. مشکل از کد نبود، از محیط بود. اینجا ارور دقیق، دلیلش و محیطی که الان باهاش کار می‌کنم رو نوشتم.

ارور

output
PS C:\sina_codes\website\backend> uv run gunicorn sina.asgi:application -c gunicorn.conf.py
Traceback (most recent call last):
  File "...\gunicorn\util.py", line 7, in <module>
    import fcntl
ModuleNotFoundError: No module named 'fcntl'

fcntl جزو خود Python هست، ولی فقط روی Unix. نسخه‌ی Windows اصلاً اینو نداره و gunicorn خط ۷ فایل util.py ایمپورتش می‌کنه. با نصب هیچ پکیجی درست نمی‌شه، چون خود این سرور روی Windows اجرا نمی‌شه.

سرورها لینوکسن و بیشتر ابزارها اول برای لینوکس میان. agentهایی مثل Claude Code هم توی ترمینال کار می‌کنن، پس shellی که بهشون می‌دی تعیین می‌کنه چی کار می‌تونن بکنن. من نمی‌خواستم از Windows کوچ کنم یا dual boot بزنم، پس لینوکس رو آوردم پیش خودم.

۱. نصب WSL

PowerShell رو با دسترسی administrator باز کن:

powershell
wsl --install -d Ubuntu

اگه خواست ریستارت کن، بعد Ubuntu رو از منوی Start باز کن و یوزرنیم و پسورد بذار. چک کن نسخه‌ت ۲ باشه:

powershell
wsl --version
wsl --list --verbose

۲. منابع کافی بهش بده

WSL خودش یه سهمی از RAM و هسته‌ها برمی‌داره. خودت توی C:\Users\<you>\.wslconfig تعیینش کن. اینا عددهای واقعی منه، واسه لپ‌تاپی با RAM زیاد. به نسبت سیستم خودت تغییرشون بده.

ini
[wsl2]
processors=12
memory=20971520000
swap=8388608000

یعنی حدود ۱۹.۵ گیگ RAM و ۷.۸ گیگ swap. با این دستور اعمال می‌شه:

powershell
wsl --shutdown

۳. پروژه رو داخل لینوکس نگه دار

این همون قدمیه که همه جا می‌ندازن. پروژه رو توی home لینوکس clone کن، نه توی /mnt/c.

bash
cd ~
git clone <your-repo-url>

فایل‌های /mnt/c برای هر خوندن از یه پل تا Windows رد می‌شن. نصب پکیج و اجرای تست کند می‌شه و file watcherها ممکنه تغییرها رو نبینن. داخل ~ یه filesystem واقعی لینوکس داری.

۴. ادیتورت رو همون‌جا باز کن

اکستنشن WSL رو توی VS Code یا Cursor نصب کن و داخل پروژه اینو بزن:

bash
code .

پنجره‌ی ادیتور روی Windows می‌مونه، ولی ترمینال و language serverها و اکستنشن‌ها توی لینوکس اجرا می‌شن، همون‌جایی که پروژه و agentت هستن.

۵. همون پروژه، این بار بالا میاد

bash
curl -LsSf https://astral.sh/uv/install.sh | sh
cd ~/sina_codes/website/backend
uv run gunicorn sina.asgi:application -c gunicorn.conf.py
output
[INFO] Starting gunicorn 26.2.0
[INFO] Using worker: uvicorn_worker.UvicornWorker

agent رو هم همین‌جا اجرا کن

bash
curl -fsSL https://claude.ai/install.sh | bash
cd ~/your-project
claude

حالا agent همون shellی رو داره که سرورت داره، پس چیزی که براش کار می‌کنه شانس واقعی داره که روی production هم کار کنه.

fa3 min read