العثور على دليل الوحدة النمطية
سؤال
كيف يمكنني العثور على دليل تم استيراد الوحدة النمطية من، حيث يحتاج إلى تحميل ملف بيانات موجود في نفس الدليل.
تعديل:
الجمع بين العديد من الإجابات:
module_path = os.path.dirname(imp.find_module(self.__module__)[1])
حصلت لي ما أردت
المحلول
إذا كنت ترغب في وحدات الدليل عن طريق تحديد module_name
كسلسلة أي دون استيراد الوحدة في الواقع ثم استخدام
def get_dir(module_name):
import os,imp
(file, pathname, description) = imp.find_module(module_name)
return os.path.dirname(pathname)
print get_dir('os')
انتاج:
C:\Python26\lib
foo.py.
def foo():
print 'foo'
bar.py.
import foo
import os
print os.path.dirname(foo.__file__)
foo.foo()
انتاج:
C:\Documents and Settings\xxx\My Documents
foo
نصائح أخرى
هذا سيعمل:
yourmodule.__file__
وإذا كنت ترغب في العثور على الوحدة النمطية تم استيراد كائن من:
myobject.__module__
الطريق إلى ملف الوحدة النمطية في module.__file__
. وبعد يمكنك استخدام ذلك مع os.path.dirname
للحصول على الدليل.
باستخدام وحدة إعادة كمثال:
>>> import re
>>> path = re.__file__
>>> print path
C:\python26\lib\re.pyc
>>> import os.path
>>> print os.path.dirname(os.path.abspath(path))
C:\python26\lib
لاحظ أنه إذا كانت الوحدة النمطية في دليل عملك الحالي ("CWD")، فستحصل على مسار نسبي foo.py
. وبعد أنا أجعلها عادة الحصول على الطريق المطلق على الفور في حالة تغيير CWD قبل استخدام مسار الوحدة النمطية.
لا تنتمي إلى StackOverflow