Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Как найти местоположение модуля Python?

#python #python_3x


Скрипт на Python использует некий модуль. С помощью какой команды можно найти его
местоположение на диске машины?
    


Ответы

Ответ 1



module.__file__ В общем случае, модуль на Питоне не обязан быть в файле на диске. Модуль может быть в zip-архиве, налету создаваться. В зависимости от того зачем вам нужен путь к модулю, есть разные API (наивный обход директорий из sys.path не нужен и может быть недостаточным). К примеру: Можно ли загрузить содержимое модулей пакета, если __init__ пуст? или чтобы ресурсы получить, лежащие в директории с модулем: Текущая директория в Python.

Ответ 2



import some_module import sys import os for path in sys.path: if os.path.exists(os.path.join(path, 'some_module')): print('some_module is here: {}'.format(path)) "Трюк" здесь заключается в том, что где бы интерпретатор не встретил строку from somewhere import something он ищет somewhere в sys.path. И если не находит - выбрасывается исключение ImportError. При этом при запуске интерпретатора, текущий путь (или при запуске скрипта python path/to/script.py путь path/to) добавляется в sys.path. 2-й вариант (попроще): import some_module print(some_module.__file__) >>> import openpyxl >>> print (openpyxl.__file__) D:\Python\lib\site-packages\openpyxl-2.3.0_b1-py2.7.egg\openpyxl\__init__.pyc >>> Но 2-й вариант можно "обмануть", явно определив в модуле переменную __file__

Комментариев нет:

Отправить комментарий