σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyالمسارات
Ctrl K
AO
+1.2k متعلّم
تسجيل الدخولانضم ↗
المسارات
AO
+1.2k متعلّم
تسجيل الدخول
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
مسار Python›الوحدة 1 · أساسيات Python للمحللين الكميين›الموضوع 1.22·~35 دمبتدئ

البيئات الافتراضية وpip

الموضع في المسارالوحدة 1 من 11 · الموضوع 22 من 33
1.22 البيئات الافتراضية وpip
—درجة المختبر— / 100إجمالي XP—التتابع—

مشروع واحد، مجموعة مكتبات واحدة

تحتاج المشاريع إلى مكتبات خارجية مثل numpy أو pandas، وتحتاج مشاريع مختلفة إلى إصدارات مختلفة منها. وتثبيت كل شيء في بايثون واحدة مشتركة يجعل الإصدارات تتصادم: الترقية لمشروع تكسر آخر. البيئة الافتراضية مجلد خاص يحوي نسخته الخاصة من مفسّر بايثون ومكتباته المثبّتة، فيحصل كل مشروع على ما يحتاجه بالضبط. وpip هي الأداة التي تنزّل المكتبات من فهرس حزم بايثون (PyPI) وتثبّتها في البيئة النشطة.

# Create an environment in the project folder (once)
python -m venv .venv

# Activate it (every new terminal)
source .venv/bin/activate        # macOS and Linux
.venv\Scripts\activate           # Windows

# The prompt now shows (.venv); python and pip belong to it
python -c "import sys; print(sys.prefix)"

# Leave it
deactivate

التثبيت باستخدام pip

عندما تكون البيئة نشطة، يضيف pip install numpy مكتبة، ويثبّت pip install numpy==1.26.4 إصدارًا محددًا، ويرقّيها pip install -U numpy، ويزيلها pip uninstall numpy. ويعرض pip list ما هو مثبّت. استدعِه عند الشك بصيغة python -m pip فهذا يضمن أنه يتبع بايثون نفسها التي ستشغّلها. ولا تستخدم sudo pip أبدًا ولا تثبّت في بايثون النظام.

# Install, pin and inspect (environment active)
python -m pip install numpy pandas
python -m pip install "scipy>=1.11,<2"
python -m pip list

# Show one library
python -m pip show numpy

requirements.txt وقواعد الإصدار

يسرد ملف المتطلبات المكتبات التي يحتاجها المشروع، واحدة في كل سطر، ليتمكن أي شخص من إعادة بناء البيئة بـpip install -r requirements.txt؛ ويكتب pip freeze > requirements.txt الإصدارات المثبّتة بدقة. كل سطر اسم مع محدِّد إصدار اختياري: ==1.26.4 (بالضبط) و>=2.0 (على الأقل) و<3 (أقل من) و!=2.1 (أي شيء عدا) و~=1.4.2 (متوافق: 1.4.2 على الأقل مع بقائه 1.4.x). والأسطر التي تبدأ بـ# تعليقات. وتُقارن الإصدارات كأرقام جزءًا جزءًا، فـ1.10 أحدث من 1.9 لا أقدم.

# A version is a tuple of numbers, not a string
print("1.10" > "1.9")               # False  (text order is wrong!)

def version_tuple(text):
    return tuple(int(part) for part in text.split("."))

print(version_tuple("1.10") > version_tuple("1.9"))   # True
print(version_tuple("2.0.1"))                         # (2, 0, 1)

# Reading one requirements line
line = "numpy>=1.26  # for arrays"
name_and_spec = line.split("#", 1)[0].strip()
print(name_and_spec)                                  # numpy>=1.26

عادات تُبقي المشاريع قابلة لإعادة الإنتاج

أنشئ بيئة لكل مشروع وأبقها داخل المشروع باسم .venv، لكن لا ترفعها إلى التحكم بالإصدارات: فهي كبيرة وخاصة بجهازك. ارفع بدلًا منها requirements.txt (أو pyproject.toml). اكتب قواعد مرنة (>=) لما تحتاجه وثبّت إصدارات محددة (==) حين يجب إعادة إنتاج النتائج. وإذا ساء سلوك شيء فيمكنك دائمًا حذف .venv وإعادة بنائه في دقيقة من ملف المتطلبات.

# requirements.txt
numpy==1.26.4          # pinned: reproduce results exactly
pandas>=2.0            # at least 2.0
scipy~=1.11.0          # 1.11.x, but not 1.12
# plotting waits until we need it

# Rebuild the environment anywhere
python -m venv .venv
python -m pip install -r requirements.txt

# Record what is installed right now
python -m pip freeze > requirements.txt
فعّل البيئة الصحيحة أولًاأشيع أخطاء pip هو التثبيت في بايثون الخاطئة: ينجح التثبيت لكن import يفشل عند تشغيل كودك. تأكد من أن المحث يعرض (.venv) وأن python -c "import sys; print(sys.prefix)" يشير إلى داخل مشروعك قبل تثبيت أي شيء.
  • python -m venv .venv ثم فعّلها: بيئة لكل مشروع.
  • python -m pip install name==version وpip install -r requirements.txt وpip freeze.
  • المحدِّدات: == و>= و< و!= و~=؛ قارن الإصدارات كصفوف أرقام؛ وارفع المتطلبات لا .venv.

التالي: أساسيات Git، لتتبع كل تغيير في كودك والعودة عندما ينكسر شيء.

المختبر: ما الذي يُقيَّم

  • اقرأ سطر متطلب واحد باستخدام parse_requirement25 نقطة
  • اقرأ ملف متطلبات كاملًا باستخدام parse_requirements25 نقطة
  • اجعل الإصدارات قابلة للمقارنة باستخدام version_tuple25 نقطة
  • تحقق من إصدار مقابل قاعدة باستخدام satisfies25 نقطة
المستكشف · lab-22-1
▾ lab-22-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-22-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-22-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub