Форум сайта python.su
Как определить путь к модулю из самого себя?
Ситуация такая. Есть пакет с модулями. В этом же пакете находится папка со статичными данными. Мне нужно из модулей обращаться к файлам из этой папки. Но я не знаю пусть до модулей.
Офлайн
Атирибут __file__
Офлайн
А разве название модуля не возвращает путь до него?
Офлайн
Само по себе - нет, не возвращает.
Офлайн
используй относительные пути к своим данным и не мучайся.
Офлайн
Посмотри pkg_resources.resource_stream(…) и вообще в сторону pkg_resources.
Я стараюсь использовать этот пакет для работы с ресурсами хранящимися в директории пакета.
К тому же такой метод гарантирует доступ даже к “заяйцованному” (и упакованному) файлу.
..bw
Офлайн
import os
class X(object):
pass
print os.path.abspath(X.__module__)
Офлайн
regall, __module__ все же возвращает *имя* модуля. По которому через sys.modules можно получить *объект* модуля, у которого есть __file__ - *путь* к этому модулю.
А так, конечно, bw правильно советует - pkg_resources лучше всех таких выкрутасов.
Офлайн
Андрей СветловДа, действительно я делал так:
По которому через sys.modules
os.path.abspath(sys.modules[X.__module__].__file__)
Офлайн
Лучше - делать copy/paste таких маленьких примеров прямо из консоли. Тогда не ошибешся :)
Офлайн