Sprawdź, które Moduły Pythona są importowane
Jak łatwo znaleźć wszystkie moduły Pythona z danego pakietu, które są używane w aplikacji?
4 answers
sys.modules
jest słownikiem mapującym nazwy modułów na moduły. Możesz sprawdzić jego klucze, aby zobaczyć zaimportowane Moduły.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-04 04:07:10
Możesz użyć python -v
, który będzie emitował komunikaty o każdy importowany moduł:
$ echo 'print "hello world"' > helo.py
$ python -v helo.py
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.py
import site # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py
import os # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc
import posix # builtin
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py
import posixpath # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc
...i tak dalej, i tak dalej. Oczywiście można później grep
moduły zainteresowania spośród tej dużej listy!-)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-04 04:09:47
Myślę, że modulefinder jest tym, czego szukasz. Możesz użyć modulefinder.py
bezpośrednio, uruchamiając go jako skrypt, jak jest tam opisane, lub możesz zaimportować moduł, a następnie utworzyć raport za pomocą klasy modulefinder.ModuleFinder
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-04 04:11:53
Naprawdę prostą metodą jest usunięcie wszystkich .pliki pyc z pakietu lub folderu, a następnie uruchom aplikację. Po odtworzeniu trochę, zrobić listę katalogów i zobaczyć, które pliki mają .pliki pyc. Są to moduły, które zostały zaimportowane przez aplikację.
(Uwaga: moduł __main__
, który zostanie wywołany jako skrypt "main", nigdy nie zostanie skompilowany, więc nie powinieneś oczekiwać, że zobaczysz .plik pyc dla niego, chyba że coś zaimportowało go z wewnątrz aplikacji. Jest to często oznaka problemu, jeśli tak się stanie.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-04 04:15:02