• 0

كيف أستطيع استدعاء وحدة في بايثون عن طريق إعطاء كامل المسار ؟

أريد استدعاء وحدة موجودة في مكان محدد في النظام، فكيف أستطيع استدعاء هذه الوحدة عن طريق تمرير مسار ملفات الوحدة ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك طرق متعددة لاستدعاء مكتبة/وحدة معينة عن طريق مسارها، ومن أسهل هذه الطرق استدعاء مكتبة imp ومن ثم استخدام دالة load_source لاستدعاء المكتبة/الوحدة المطلوبة كما في المثال التالي:

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()

ملاحظة: تم ازالت هذه المكتبة في الإصدار 3.4 من البايثون.
أما لو كنت تستخدم بايثون 3.3+ فيمكنك في هذه الحالة استخدام دالة SourceFileLoader من مكتبة importlib كما في المثال التالي:

from importlib.machinery import SourceFileLoader

foo = SourceFileLoader("module.name", "/path/to/file.py").load_module()
foo.MyClass()

ومن الطرق الأخرى لاستدعاء وحدة/مكتبة يمكنك إضافة مسار المكتبة/الوحدة عن طريق sys.path.append ومن ثم يمكنك استدعاء جميع الوحدات/المكتبات الموجودة في ذلك المسار كما في هذا المثال:

import sys
# the mock-0.3.1 dir contains testcase.py, testutils.py & mock.py
sys.path.append('/foo/bar/mock-0.3.1')

from testcase import TestCase
from testutils import RunTests
from mock import Mock, sentinel, patch

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن