Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 16, 2009 14:05:31

VadimHacker
От:
Зарегистрирован: 2009-02-08
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

Как определить путь к модулю из самого себя?
Ситуация такая. Есть пакет с модулями. В этом же пакете находится папка со статичными данными. Мне нужно из модулей обращаться к файлам из этой папки. Но я не знаю пусть до модулей.



Офлайн

#2 Дек. 16, 2009 14:12:41

VadimHacker
От:
Зарегистрирован: 2009-02-08
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

Атирибут __file__



Офлайн

#3 Дек. 16, 2009 23:30:56

Renji
От:
Зарегистрирован: 2009-12-14
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

А разве название модуля не возвращает путь до него?



Офлайн

#4 Дек. 17, 2009 00:58:04

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

Само по себе - нет, не возвращает.

Офлайн

#5 Дек. 17, 2009 11:35:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2706
Репутация: +  182  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

используй относительные пути к своим данным и не мучайся.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Дек. 18, 2009 07:11:42

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Как определить путь к модулю из самого себя?

Посмотри pkg_resources.resource_stream(…) и вообще в сторону pkg_resources.
Я стараюсь использовать этот пакет для работы с ресурсами хранящимися в директории пакета.
К тому же такой метод гарантирует доступ даже к “заяйцованному” (и упакованному) файлу.

..bw



Офлайн

#7 Дек. 18, 2009 09:44:22

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

import os

class X(object):
pass

print os.path.abspath(X.__module__)



Офлайн

#8 Дек. 18, 2009 11:23:49

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Как определить путь к модулю из самого себя?

regall, __module__ все же возвращает *имя* модуля. По которому через sys.modules можно получить *объект* модуля, у которого есть __file__ - *путь* к этому модулю.

А так, конечно, bw правильно советует - pkg_resources лучше всех таких выкрутасов.



Офлайн

#9 Дек. 18, 2009 12:02:13

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как определить путь к модулю из самого себя?

Андрей Светлов
По которому через sys.modules
Да, действительно я делал так:
os.path.abspath(sys.modules[X.__module__].__file__)
хм… Надо посты с утра писать только после кофе. =)



Офлайн

#10 Дек. 18, 2009 12:19:42

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Как определить путь к модулю из самого себя?

Лучше - делать copy/paste таких маленьких примеров прямо из консоли. Тогда не ошибешся :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version