استيراد Python من دليل أصلي: دليل سريع

استيراد Python من دليل أصلي: دليل سريع

هل وجدت نفسك في وضع عميق في ملفات Python ، وتكافح من أجل استيراد وحدة من دليل رئيسي؟ إذا كان الأمر كذلك ، فأنت في شركة جيدة. قد يبدو نظام استيراد Python أحيانًا وكأنه متاهة متعرجة ، ولكن لا تقلق ، فنحن هنا لمساعدتك على التنقل!

للاستيراد من دليل رئيسي في Python ، يمكنك استخدام وحدة sys . بإدخال الدليل المطلوب في قائمة sys.path ، فإنك تزود المترجم بموقع الوحدة النمطية المطلوبة. بعد تعديل sys.path ، يمكنك استيراد الوحدة الهدف باستخدام بيان الاستيراد القياسي.

استيراد Python من دليل أصلي: دليل سريع

في هذه المقالة ، سوف نستكشف كيف يمكنك الاستيراد من الدلائل الأصلية في بايثون. علاوة على ذلك ، سننظر في حالات استخدام محددة للاستيراد ستساعدك على فهم البنية الأساسية للأدلة بشكل أفضل.

دعنا ندخله!

جدول المحتويات

كيفية الاستيراد في بايثون

سننتقل مباشرة إلى موضوع اليوم: الاستيراد في بايثون. هذه الأسطر البسيطة من التعليمات البرمجية في بداية نصوص Python التي غالبًا ما تبدأ بالاستيراد أو من ؟ هذه هي تذكرتك للاستفادة من قوة مكتبات ووحدات Python الشاملة.

في هذا القسم ، سنستعرض التعليمات البرمجية للاستيراد من الدليل الأصلي في Python. سننظر أيضًا في الأخطاء المحتملة التي يمكن أن تنشأ عند استيراد الوحدات من الدليل الأصلي.

ما هو نظام استيراد بايثون؟

يسمح نظام استيراد Python بإعادة استخدام التعليمات البرمجية وتنظيمها بكفاءة. يسهل عليك صيانة المشاريع المعقدة.

لاستيراد وحدة نمطية أو حزمة في Python ، يمكنك استخدام بيان الاستيراد . يتم توزيع الوحدات النمطية كحزم ، وهي عبارة عن أدلة بها مجموعة من ملفات Python.

لاستيراد وحدة نمطية من الدليل الأصلي ، يمكنك استخدام وحدة sys.path لإضافة الدليل الأصل إلى مسار Python. بعد إضافة الدليل الأصلي ، يمكنك استيراد الوحدة باستخدام بيان الاستيراد .

عرض للاستيراد من دليل الوالدين

لمنحك شرحًا واضحًا للاستيراد من الدليل الأصلي ، دعنا ننتقل إلى سلسلة من الخطوات لمساعدتك على فهم العملية بأكملها.

1. إنشاء الدلائل والملفات اللازمة

أولاً ، افتح مستكشف الملفات وانتقل إلى محرك الأقراص المحلي المطلوب. أنا أستخدم محرك الأقراص E المحلي الخاص بي ، لذلك ، سأقوم بإنشاء دليل جديد باسم my_project .

داخل my_project ، أنشئ دليلًا آخر باسم module_dir .

لذلك ، يجب أن يكون لديك الآن:

E:
|-- /my_project
    |-- /module_dir

2. إضافة ملفات Python

بعد ذلك ، قم بإنشاء ملف .py جديد باسم main.py في دليل my_project .

بعد ذلك ، أنشئ ملف Python آخر باسم my_module.py في module_dir .

يجب أن يبدو الهيكل الخاص بك الآن كما يلي:

E:
|-- /my_project
    |-- main.py
    |-- /module_dir
        |-- my_module.py

إذا كنت تستخدم Visual Studio Code ، فيجب أن تبدو بنية الدليل كما يلي:

استيراد Python من دليل أصلي: دليل سريع

3. تحرير ملفات بايثون

افتح my_module.py وأضف الكود التالي:

def my_function():
    print("Hello from my_module!")

ثم انطلق واحفظ وأغلق الملف.

الآن ، افتح main.py وأضف الكود التالي:

import sys
import os

# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))

# Add the parent directory to sys.path
sys.path.append(parent_dir)

# Import the module from the parent directory
from module_dir import my_module

# Use a function from my_module
my_module.my_function()

في هذا البرنامج النصي ، نكتشف أولاً موقع الدليل بمستوى واحد أعلى من البرنامج النصي الذي نقوم بتشغيله (هذا هو الدليل الرئيسي). بعد ذلك ، نطلب من Python البحث أيضًا في هذا المجلد الأصلي عندما يحتاج إلى استيراد وحدات.

بعد القيام بذلك ، نقوم باستيراد وحدة تسمى my_module موجودة داخل دليل يسمى module_dir الموجود في هذا الدليل الأصلي. أخيرًا ، نستدعي دالة تسمى my_function من my_module .

بعد إضافة الكود أعلاه ، احفظ وأغلق الملف.

4. تشغيل المدونة

لتشغيل هذا الرمز ، افتح المحطة الطرفية لمحرر الكود المطلوب وقم بتشغيل ملف main.py. إذا كنت تستخدم Visual Studio Code ، فيجب أن يبدو الإخراج كما يلي:

استيراد Python من دليل أصلي: دليل سريع

يقوم main.py باستيراد الوظيفة من my_module.py ، كما هو موضح في الصورة أعلاه.

يوضح هذا المثال بالتفصيل كيف يعمل نظام الملفات والاستيراد من الدليل الأصلي في Python.

كيفية التعامل مع ImportError و ModuleNotFoundError في بايثون

سترفع Python استثناء ImportError عندما لا يتم العثور على الوحدة النمطية التي تحاول استيرادها أثناء عملية الاستيراد.

يعد ImportError فئة فرعية من استثناء ModuleNotFoundError . يتم رفعه عندما لا تكون الوحدة التي تم استيرادها موجودة أو لا يمكن تحميلها.

فيما يلي أمثلة على السيناريوهات التي قد تحدث فيها:

  • الوحدة النمطية أو الحزمة ليست في sys.path .

  • الوحدة النمطية أو اسم الحزمة بها أخطاء إملائية أو أنها غير موجودة.

  • توجد مشكلة في رمز الوحدة ، مما يمنع استيرادها بشكل صحيح.

عند مواجهة هذه الأخطاء ، يمكنك استخدام الحلول التالية:

  • إعادة التدقيق الإملائي ووجود الوحدة أو الحزمة.

  • إضافة الدليل الضروري إلى sys.path باستخدام append () أو insert () .

  • إصلاح أي مشكلات في رمز الوحدة قد تعيق استيرادها.

لمعرفة المزيد حول معالجة الأخطاء في Python ، تحقق من الفيديو التالي:

بعد فهم كيفية عمل الاستيراد في Python ، من المهم أيضًا أن تكتسب بعض الإلمام بهيكل دليل Python.

تسير بنية الدليل والاستيراد جنبًا إلى جنب مع بعضهما البعض لأن الاستيراد يتطلب فهمًا لهيكل الدليل ، لذلك دعنا نتطرق إلى ذلك في القسم التالي.

هيكل دليل بايثون

يعد فهم بنية دليل Python أكثر من مجرد معرفة مكان وضع البرامج النصية الخاصة بك أو مكان العثور على تلك المكتبة التي قمت بتثبيتها للتو.

إنه يشبه وجود مكتب نظيف ومنظم جيدًا: ستعرف بالضبط أين يوجد كل شيء ، وسترتفع إنتاجيتك بشكل كبير ، لذلك دعنا نتناول الأساسيات في هذا القسم.

هيكل العبوة

تعتبر بنية الدليل لمشروع Python ضرورية للتنظيم الصحيح. إذا قمت ببناء الحزمة الخاصة بك بشكل صحيح ، فسوف تساعدك على تقليل فرصة تعارض التسمية. علاوة على ذلك ، سيمكنك أيضًا من التنقل بسهولة عبر نظام الملفات الخاص بك.

ما يلي هو بنية دليل مشروع Python النموذجية:

project/
?
??? package1/
?   ??? __init__.py
?   ??? module1.py
?   ??? module2.py
?
??? package2/
?   ??? __init__.py
?   ??? module3.py
?   ??? module4.py
?
??? main.py

في المثال أعلاه ، يعد project هو الدليل الجذر الذي يحتوي على حزمتين فرعيتين ، package1 و package2 . تحتوي كل حزمة على ملفات .py وملف init.py فريد .

ما هي ملفات init.py؟

إن ملفات init.py مهمة لتحديد سلوك الحزمة عند استيرادها. يتم تنفيذ هذه الملفات عند استيراد الحزمة الأصلية الخاصة بهم.

يمكن أن تكون ملفات init.py فارغة أو تحتوي على رمز تهيئة. تشير أيضًا إلى Python أنه يجب معاملة المجلد كحزمة.

لاستيراد وحدة نمطية من دليل أصل ، يمكنك استخدام طريقة sys.path . ستحتاج إلى إلحاق مسار الدليل الأصل بـ sys.path .

لتوضيح ذلك ، دعنا نبني على مثالنا السابق. كان لدينا هيكل الدليل التالي:

E:
|-- /my_project
    |-- main.py
    |-- /module_dir
        |-- my_module.py

الآن ، دعنا نضيف ملف init.py إلى دليل my_module . يمكنك ترك هذا الملف فارغًا في الوقت الحالي. يشير وجودها إلى Python أنه يجب معاملة هذا الدليل كحزمة.

يجب أن تبدو بنية الدليل الآن كما يلي:

استيراد Python من دليل أصلي: دليل سريع

بعد إضافة ملف init.py ، يجب إجراء تغييرات على ملف main.py لتوجيهه للتعامل مع مجلد module_dir كحزمة. يجب أن يحتوي ملف main.py الآن على الكود التالي:

import sys
import os

# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))

# Add the parent directory to sys.path
sys.path.append(parent_dir)

# Import my_module from the package module_dir
import module_dir

# Call my_function from my_module
my_module.my_function()

في هذا المثال ، يستورد main.py الحزمة module_dir ، ثم يستدعي الوظيفة my_function () من my_module داخل تلك الحزمة.

لاحظ التغيير في المكالمة إلى my_function ؛ نظرًا لأننا نتعامل الآن مع module_dir كحزمة ، يتعين علينا تضمين اسم الحزمة عند استدعاء وظائف من وحدات داخل الحزمة.

سيكون الإخراج مشابهًا للإخراج السابق. كان التغيير الوحيد الذي أجريناه هو التعامل مع module_dir كحزمة تتضمن ملف init.py.

استيراد Python من دليل أصلي: دليل سريع

مسار بحث بايثون

هل تساءلت يومًا كيف تعرف Python مكان العثور على الوحدات التي تحاول استيرادها؟ أو ربما واجهت "ModuleNotFoundError" مزعجًا ولم تستطع معرفة السبب؟

في هذا القسم ، سنقوم بمعالجة هذه الألغاز وجهاً لوجه ونتعمق في مفهوم مسار بحث Python.

مسار بحث Python ، المعروف أيضًا باسم sys.path ، هو خارطة طريق Python الصغيرة للعثور على جميع الوحدات التي تحتاجها. مثل المستكشف الدؤوب ، يستخدم Python هذا المسار للبحث في جهاز الكمبيوتر الخاص بك عن وحدات كلما استخدمت بيان الاستيراد.

إن فهم كيفية عملها يمكن أن يقيك من الصداع ويساعدك على استكشاف الأخطاء وإصلاحها عندما تسوء الأمور ، لذلك دعنا نتناول بعض الأساسيات!

1. ما هي قائمة sys.path في بايثون؟

تعد قائمة sys.path مكونًا مهمًا عند استيراد وحدات نمطية في دليل. إنها قائمة من السلاسل التي تمثل مسار بحث الوحدة النمطية.

كل سلسلة في القائمة هي موقع دليل حيث تبحث Python عن الوحدات ( ملفات * .py ) أو الحزم (المجلدات التي تحتوي على ملفات init.py ).

يوضح لك المثال التالي كيفية عرض قائمة sys.path الحالية :

import sys

for path in sys.path:
    print(path)

بعد تشغيل الكود أعلاه ، سترى ناتجًا مثل ما يلي:

استيراد Python من دليل أصلي: دليل سريع

يمكنك أيضًا إضافة أدلة جديدة إلى قائمة sys.path بحيث تعثر Python على وحداتك المخصصة.

على سبيل المثال:

import sys
sys.path.append('/path/to/new/module/directory')

2. ما هي متغيرات بيئة PythonPath؟

هناك طريقة أخرى يمكنك من خلالها إدارة مسار بحث الوحدة النمطية باستخدام متغير بيئة PYTHONPATH .

PYTHON PATH عبارة عن سلسلة تحتوي على قائمة بالأدلة الملحقة بقائمة sys.path الافتراضية . هذا يعني أنه يمكنك إضافة أدلة إلى PYTHONPATH. هذا يسمح لبيثون بالبحث عن الوحدات في تلك الدلائل عند الاستيراد.

يعتمد إعداد متغير بيئة PYTHONPATH على نظام التشغيل الخاص بك:

  • الأنظمة المستندة إلى Unix (Linux و macOS) : يمكنك استخدام أمر التصدير في الجهاز الطرفي أو إضافة السطر التالي إلى ملف تكوين shell ( .bashrc أو .zshrc أو ما شابه):

    export PYTHONPATH="/path/to/module/directory1:/path/to/module/directory2"
  • نظام التشغيل Windows : انتقل إلى خصائص النظام > متغيرات البيئة ، وضمن متغيرات المستخدم ، انقر فوق جديد لإنشاء متغير جديد بالاسم: "PYTHONPATH" والقيمة كقائمة من مسارات الدليل مفصولة بفاصلة منقوطة (؛).

    C:pathtomoduledirectory1;C:pathtomoduledirectory2
    

بمجرد تعيين متغير المسار ، يمكنك تشغيل برنامج Python النصي. سيبحث عن الوحدات التي تم استيرادها في تلك الدلائل بالإضافة إلى الوحدات الافتراضية في sys.path .

عند تنظيم التعليمات البرمجية الخاصة بك في ملفات ومجلدات ، ستصادف بشكل متكرر عمليات استيراد ذات صلة وضبط sys.path .

في القسم التالي ، سوف نستكشف كليهما ونرى كيف يتناسبان مع إطار عمل استيراد بايثون.

واردات الدليل الأصل

يمكنك تنظيم التعليمات البرمجية في مجلدات وملفات مختلفة لتحسين إمكانية القراءة والصيانة. ومع ذلك ، قد يكون استيراد الوحدات النمطية من الدلائل الرئيسية أمرًا صعبًا بعض الشيء.

في هذا القسم ، سنناقش طريقتين لتحقيق ذلك:

  1. الواردات النسبية

  2. ضبط sys.path

1. الواردات النسبية

تسمح لك الواردات النسبية باستيراد الوحدات بناءً على موقعها النسبي في التسلسل الهرمي للدليل.

يمكنك استخدام تدوين النقطة ( . ) للإشارة إلى الدليل الحالي أو تدوين النقطة المزدوجة ( .. ) للإشارة إلى الدليل الأصلي.

افترض أن لديك بنية دليل مثل ما يلي:

parent_directory/
?
??? module_a.py
?
??? sibling_directory/
    ??? module_b.py

داخل module_b.py ، يمكنك استخدام عمليات الاستيراد النسبية للوصول إلى module_a.py :

from .. import module_a

تشير النقطة المزدوجة إلى الدليل الأصل. من المهم ملاحظة أن عمليات الاستيراد النسبية تعمل فقط إذا كان الدليل الأصلي عبارة عن حزمة (بها ملف init.py ).

2. ضبط sys.path

يمكنك أيضًا استيراد وحدات نمطية من دليل أصل عن طريق تعديل sys.path .

قبل عبارة الاستيراد ، يمكنك إلحاق مسار الدليل الأصلي بمسار sys.path . أولاً ، تحتاج إلى استيراد وحدة sys . بعد ذلك ، يمكنك استخدام وحدة نظام التشغيل للحصول على مسار الدليل الأصل.

افترض أن لديك بنية دليل مثل ما يلي:

project_root/
?
??? parent_directory/
?   ??? module_a.py
?
??? current_directory/
    ??? module_b.py

في module_b.py ، يمكنك إلحاق مسار الدليل الأصل بـ sys.path مثل هذا:

import os
import sys

parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)

import module_a

الآن ، ستبحث Python عن module_a.py في الدليل الأصلي عند استيرادها في module_b.py .

يمكنك استخدام أسلوب الاستيراد النسبي أو أسلوب sys.path لاستيراد الوحدات النمطية من دليل أصل.

كيفية العمل مع الوحدات والحزم

في Python ، تعد الوحدات النمطية والحزم طريقة لتنظيم وإعادة استخدام الكود. يمكنك استخدامها لتقسيم المشاريع المعقدة إلى أجزاء يمكن إدارتها.

سيناقش هذا القسم كيفية العمل مع الوحدات والحزم في بايثون . سنقوم أيضًا بتضمين مفاهيم أساسية مثل:

  1. مساحات الأسماء

  2. المتغيرات والتعريفات

  3. بيانات الاستيراد

1. ما هي مساحات الأسماء؟

تعد مساحات الأسماء في Python طريقة للتأكد من أن أسماء المتغيرات والوظائف والفئات لا تتعارض بين الوحدات النمطية المختلفة.

توجد مستويات مختلفة من مساحات الأسماء في بايثون ، مثل:

  • Global Namespace: يشير إلى مساحة اسم الوحدة النمطية بأكملها.

  • Local Namespace: يشير إلى مساحة الاسم داخل دالة أو فئة.

يمكنك الحصول على اسم في مساحة اسم معينة باستخدام تدوين مساحة الاسم [name] .

2. ما هي المتغيرات والتعريفات؟

في نص بايثون ، يمكنك تحديد المتغيرات والوظائف والفئات. يتم تخزين هذه التعريفات في مساحة اسم البرنامج النصي.

باستيراد البرنامج النصي كحزمة ، يمكنك الوصول إلى تعريفاته وإعادة استخدامها في أجزاء أخرى من مشروعك.

فيما يلي مثال على كيفية تعريف متغير ووظيفة في نفس مساحة الاسم:

# my_variable.py
my_variable = 5

def my_function(x):
    return x + my_variable

تحتوي هذه الوحدة على متغير my_variable ووظيفة my_function .

لتشغيل هذا الرمز ، يمكنك إنشاء ملف جديد باسم my_variable.py ووضع الكود هناك كما هو موضح أدناه:

استيراد Python من دليل أصلي: دليل سريع

يمكنك الآن استيراد هذا الملف واستخدامه في برنامج نصي آخر كما هو موضح أدناه:

استيراد Python من دليل أصلي: دليل سريع

بعد تشغيل ملف main.py ، ستحصل على إخراج مشابه لما يلي:

استيراد Python من دليل أصلي: دليل سريع

3. ما هي بيانات الاستيراد؟

يمكنك استيراد الملفات أو الوحدات النمطية أو الحزم في Python باستخدام بيان الاستيراد

بعض طرق الاستيراد الشائعة هي:

  • import module_name : تستورد هذه الطريقة وحدة نمطية ، مما يجعل كل تعريفاتها يمكن الوصول إليها باستخدام رمز module_name.definition_name .

import mymodule

result = mymodule.my_function(3)
  • من module_name import some_definition : تستورد هذه الطريقة تعريفًا محددًا من وحدة نمطية ، مما يسمح لك باستخدامها مباشرةً بدون بادئة الوحدة النمطية.

from mymodule import my_function

result = my_function(3)
  • من module_name import * : تستورد هذه الطريقة جميع التعريفات من وحدة ، لكن لا يُنصح بها لأنها قد تؤدي إلى تعارض في التسمية.

افكار اخيرة

يعد فهم كيفية الاستيراد من دليل رئيسي في Python أمرًا مهمًا في الحفاظ على قاعدة بيانات منظمة.

تتيح لك هذه المعرفة تصميم مشاريعك بطريقة أكثر نمطية. كما أنه يزيد من إمكانية إعادة استخدام التعليمات البرمجية الخاصة بك. من خلال هيكلة التعليمات البرمجية الخاصة بك في وحدات وحزم منفصلة ، يمكنك تجنب تكرار التعليمات البرمجية وتسهيل صيانتها وتحديثها.

تكون مهارة استخدام الاستيراد ومن العبارات أكثر قيمة عندما تعمل في مشاريع أكبر حيث يتم تقسيم الوظائف عبر أدلة مختلفة.

من خلال معرفة كيفية ضبط مسار Python بشكل صحيح لاستيراد الوحدات ، يمكنك الوصول إلى الوظائف المحددة في دليل واحد أثناء العمل في دليل آخر.

تذكر أن مفتاح إتقان Python - أو أي لغة برمجة - يكمن في الممارسة المتسقة والفضول النهم. لذا ، استمر في الاستكشاف ، واستمر في التجربة ، واستمر في تحدي نفسك.

باستخدام هذا الدليل السريع ، يجب أن تكون مجهزًا جيدًا للتعامل مع أي ألغاز استيراد ترميها Python عليك. لكن لا تتوقف هنا. هناك عالم كامل من تقنيات وحيل بايثون تنتظر من يكتشفها!


ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

كيفية حفظ وتحميل ملف RDS في R.

كيفية حفظ وتحميل ملف RDS في R.

ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.

مقدمة لتصفية السياق في LuckyTemplates

مقدمة لتصفية السياق في LuckyTemplates

في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX ​​في توفير النتائج.

إعداد تقارير الأعمال باستخدام LuckyTemplates

إعداد تقارير الأعمال باستخدام LuckyTemplates

إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته