Получение директории модулей Python изнутри себя - PullRequest
1 голос
/ 28 сентября 2011

У меня есть модуль Python, и я хотел бы получить этот каталог модулей изнутри себя.Я хочу сделать это, потому что у меня есть несколько файлов, на которые я хотел бы сослаться относительно модуля.

Ответы [ 4 ]

3 голосов
/ 28 сентября 2011

Сначала вам нужно получить ссылку на модуль внутри себя.

mod = sys.__modules__[__name__]

Затем вы можете использовать __file__, чтобы получить файл модуля.

mod.__file__

Его каталогdirname этого.

3 голосов
/ 28 сентября 2011

Поскольку вы находитесь внутри модуля, все, что вам нужно, это:

import os
path_to_this_module = os.path.dirname(__file__)

Однако, если рассматриваемый модуль на самом деле является точкой входа ваших программ, тогда __file__ будет только именем файлаи вам нужно будет расширить путь:

import os
path_to_this_module = os.path.dirname(os.path.abspath(__file__))
2 голосов
/ 28 сентября 2011

Я думаю, это то, что вы ищете:

import <module>
import os
print os.path.dirname(<module>.__file__)
1 голос
/ 28 сентября 2011

Для этого вы должны использовать pkg_resources, семейство resource* функций выполняет практически все, что вам нужно, без необходимости работать с файловой системой.

import pkg_resources
data = pkg_resources.resource_string(__name__, "some_file")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...