Найти - Пользователи
Полная версия: Как определить путь к модулю из самого себя?
Начало » Python для новичков » Как определить путь к модулю из самого себя?
1 2
VadimHacker
Как определить путь к модулю из самого себя?
Ситуация такая. Есть пакет с модулями. В этом же пакете находится папка со статичными данными. Мне нужно из модулей обращаться к файлам из этой папки. Но я не знаю пусть до модулей.
VadimHacker
Атирибут __file__
Renji
А разве название модуля не возвращает путь до него?
Ferroman
Само по себе - нет, не возвращает.
Rodegast
используй относительные пути к своим данным и не мучайся.
bw
Посмотри pkg_resources.resource_stream(…) и вообще в сторону pkg_resources.
Я стараюсь использовать этот пакет для работы с ресурсами хранящимися в директории пакета.
К тому же такой метод гарантирует доступ даже к “заяйцованному” (и упакованному) файлу.

..bw
regall
import os

class X(object):
pass

print os.path.abspath(X.__module__)
Андрей Светлов
regall, __module__ все же возвращает *имя* модуля. По которому через sys.modules можно получить *объект* модуля, у которого есть __file__ - *путь* к этому модулю.

А так, конечно, bw правильно советует - pkg_resources лучше всех таких выкрутасов.
regall
Андрей Светлов
По которому через sys.modules
Да, действительно я делал так:
os.path.abspath(sys.modules[X.__module__].__file__)
хм… Надо посты с утра писать только после кофе. =)
Андрей Светлов
Лучше - делать copy/paste таких маленьких примеров прямо из консоли. Тогда не ошибешся :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB