Python импортирует модуль:как отследить его происхождение PYTHONPATH, sys, os
-
11-12-2019 - |
Вопрос
модуль Nosetests запускается повсюду на моем компьютере (он не должен запускаться только в нескольких указанных местах).Я предполагаю, что это потому, что я случайно добавил модуль носовых тестов в PYTHONPATH, поместив его непосредственно в пакеты dist-packages или site-packages или сообщив Python, чтобы он каждый раз искал его постоянно.
Я знаком с несколькими командами, такими как find, import os, import sys и PYTHONPATH, но я не могу найти способ отследить виновный каталог, который позволяет этому произойти.
что-то вроде
>>> find . -name "*nosetests"* -print
любая помощь будет отличной.
Решение
Для решения вашей проблемы достаточно изучить nosetests.__file__
, как предложил @Adam.Но есть более общий способ:тот inspect
модуль, который также работает для классов и других объектов, у которых нет __file__
атрибут.
import inspect, nosetests
print inspect.getsourcefile(nosetests)
Другие советы
Давайте посмотрим на этот пример:
>>> import itertools
>>> print itertools.__file__
/usr/lib/python2.7/lib-dynload/itertools.so
>>> import string
>>> print string.__file__
/usr/lib/python2.7/string.pyc
.