"modulefinder" --- 搜尋腳本所使用的模組
***************************************

**原始碼：**Lib/modulefinder.py

======================================================================

此模組提供了一個 "ModuleFinder" 類別，可用於確定腳本引入的模組集合。
"modulefinder.py" 也可以作為腳本運行，其將 Python 腳本的檔案名稱作為它
的引數，並在之後會列印出引入模組的報告。

modulefinder.AddPackagePath(pkg_name, path)

   記錄在指定的 *path* 中可以找到名為 *pkg_name* 的套件。

modulefinder.ReplacePackage(oldname, newname)

   允許指定名為 *oldname* 的模組實際上是名為 *newname* 的套件。

class modulefinder.ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[])

   此類別提供 "run_script()" 和 "report()" 方法來決定腳本引入的模組集
   合。*path* 可以是搜尋模組的目錄串列；如果未指定，則使用 "sys.path"
   。*debug* 設定偵錯等級；較高的值可使類別列印有關其即將執行之操作的
   偵錯訊息。*excludes* 是要從分析中排除的模組名稱串列。
   *replace_paths* 是將在模組路徑中替換的 "(oldpath, newpath)" 元組串
   列。

   report()

      將報告列印到標準輸出，其中列出了腳本引入的模組及其路徑，以及丟失
      或似乎丟失的模組。

   run_script(pathname)

      分析 *pathname* 檔案的內容，該檔案必須包含 Python 程式碼。

   modules

      將模組名稱對應到模組的字典。請參閱 ModuleFinder 的用法範例。


"ModuleFinder" 的用法範例
=========================

將被分析的腳本 (bacon.py)：

   import re, itertools

   try:
       import baconhameggs
   except ImportError:
       pass

   try:
       import guido.python.ham
   except ImportError:
       pass

將輸出 bacon.py 報告的腳本：

   from modulefinder import ModuleFinder

   finder = ModuleFinder()
   finder.run_script('bacon.py')

   print('載入模組:')
   for name, mod in finder.modules.items():
       print('%s: ' % name, end='')
       print(','.join(list(mod.globalnames.keys())[:3]))

   print('-'*50)
   print('模組沒有被引入:')
   print('\n'.join(finder.badmodules.keys()))

範例輸出（可能因架構而異）：

   載入模組:
   _types:
   copyreg:  _inverted_registry,_slotnames,__all__
   re._compiler:  isstring,_sre,_optimize_unicode
   _sre:
   re._constants:  REPEAT_ONE,makedict,AT_END_LINE
   sys:
   re:  __module__,finditer,_expand
   itertools:
   __main__:  re,itertools,baconhameggs
   re._parser:  _PATTERNENDERS,SRE_FLAG_UNICODE
   array:
   types:  __module__,IntType,TypeType
   ---------------------------------------------------
   模組沒有被引入:
   guido.python.ham
   baconhameggs
