Python импортирующий модуль: как отследить его происхождение PYTHONPATH, sys, os - PullRequest
1 голос
/ 11 марта 2012

модуль проверки носителей работает везде на моем компьютере (он не должен запускаться только в нескольких указанных местах).Я предполагаю, что это потому, что я случайно добавил тесты носа модуля в PYTHONPATH, либо поместив его непосредственно в dist-пакеты или site-пакеты, либо попросив python постоянно искать его постоянно.

Я знаком с несколькими командами, такими как find, import os, import sys и PYTHONPATH, но я не могу найти способ отследить каталог преступника, который позволяет этому происходить.

что-то вроде

>>> find . -name "*nosetests"* -print

любая помощь будет отличной.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Чтобы решить вашу проблему, достаточно изучить nosetests.__file__, как предложил @Adam.Но есть более общий способ: модуль inspect, который также работает для классов и других объектов, которые не имеют атрибута __file__.

import inspect, nosetests
print inspect.getsourcefile(nosetests)
2 голосов
/ 11 марта 2012

Давайте посмотрим на этот пример:

>>> import itertools
>>> print itertools.__file__
/usr/lib/python2.7/lib-dynload/itertools.so
>>> import string
>>> print string.__file__
/usr/lib/python2.7/string.pyc
...