Как определить, какой файл импортируется в Python, с помощью оператора «import»? - PullRequest
6 голосов
/ 30 марта 2010

Как определить, какой файл импортируется в Python, с помощью оператора "import"?

Я хочу определить, что я загружаю правильную версию локально модифицированного файла .py. В основном эквивалент «который» в среде POSIX.

Ответы [ 4 ]

11 голосов
/ 30 марта 2010

Запустите python с параметром -v, чтобы включить отладочный вывод. Когда вы затем импортируете модуль, Python распечатает, откуда был импортирован модуль:

$ python -v
...
>>> import re
# /usr/lib/python2.6/re.pyc matches /usr/lib/python2.6/re.py
import re # precompiled from /usr/lib/python2.6/re.pyc
...

Если вы хотите узнать, в каких других местах Python искал модуль, добавьте секунду -v:

$ python -v -v
...
>>> import re
# trying re.so
# trying remodule.so
# trying re.py
# trying re.pyc
# trying /usr/lib/python2.6/re.so
# trying /usr/lib/python2.6/remodule.so
# trying /usr/lib/python2.6/re.py
# /usr/lib/python2.6/re.pyc matches /usr/lib/python2.6/re.py
import re # precompiled from /usr/lib/python2.6/re.pyc
...
6 голосов
/ 30 марта 2010

Посмотрите на атрибут __file__.

2 голосов
/ 30 марта 2010

Я понял это. Импортированные модули имеют поле __file__, которое является файлом, который был загружен. В сочетании с __import__ я определил функцию:

which = lambda str : __import__(str).__file__.

0 голосов
/ 30 марта 2010

Поместите явный идентификатор версии в каждый модуль.

__version__ = "Some.version.String"

Поместите их в каждый без исключения модуль, который вы пишете.

import someModule
print someModule.__version__

Это (а) явное, (б) простое управление. Вы также можете использовать «Подстановку ключевых слов» из инструмента управления версиями, чтобы фактически заполнять строку версии для вас при каждом коммите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...