2014-02-28 31 views
1

我發現模塊modulefinder在於:查找用戶定義的模塊進口

可以用於確定該組由一個腳本導入模塊。

然而,當我做例子測試我的腳本,它只是檢查基本模塊,並且不會報告其進口不屬於基礎模塊(以下簡稱「 - 」是我除了正確可讀格式):

Loaded modules: 

- tokenize: LPAR,PseudoToken,ENDMARKER 
- heapq: sort,izip,_nlargest 
- __future__: __module__,getMandatoryRelease,division 
- copy_reg: _inverted_registry,_slotnames,__all__ 
- sre_compile: _optimize_unicode,isstring,_sre 
- _collections:  
- cStringIO:  
- _sre:  
- functools: wraps,partial,WRAPPER_ASSIGNMENTS 
- random: WichmannHill,_sin,_exp 
- cPickle: 
- __builtin__: 
- subprocess: __module__,STDOUT,__str__ 
- dummy_thread: __module__,__enter__,__exit__ 
- gc: 
- cmd: do_help,__module__,prompt 
- __main__: PREDICTORS_CFG_DIR,sequence,tearDown 
- operator: 
- array: 
- select: 
- _heapq: 
- _threading_local: current_thread,__module__,__new__ 
- abc: __module__,_InstanceType,_abc_invalidation_counter 
- _bisect: 
- posixpath: _varprog,sameopenfile,splitext 
- _random:  
- os2emxpath: pardir,realpath,stat 
- tempfile: _TemporaryFileWrapper,_set_cloexec,_candidate_tempdir_list 
- errno: 
- pprint: __module__,format,_StringIO 
- binascii: 
- token: DEDENT,LPAR,ENDMARKER 
- sre_constants: REPEAT_ONE,makedict,AT_END_LINE 
- re: __module__,finditer,_expand 
- _abcoll: __module__,Container,__isub__ 
- collections: __repr__,OrderedDict,_make 
- ntpath: pardir,realpath,exists 
- threading: _BoundedSemaphore,_sleep,Semaphore 
- opcode: hasjrel,hasconst,EXTENDED_ARG 
- _struct:  
- _warnings: 
- math: 
- shlex: __module__,get_token,file 
- fcntl: 
- genericpath: isdir,stat,commonprefix 
- stat: S_IWRITE,ST_MTIME,S_IRGRP 
- string: ascii_lowercase,upper,__module__ 
- warnings: __module__,filterwarnings,once_registry 
- UserDict: __module__,popitem,pop 
- inspect: CO_VARARGS,formatargvalues,findsource 
- repr: aRepr,__module__,repr_list 
- struct: _clearcache,__doc__ 
- sys: 
- pwd: 
- imp: 
- getopt: opt,__module__,short_has_arg 
- readline: 
- copy: _copy_with_copy_method,__module__,_deepcopy_atomic 
- ConfigParser: optionxform,InterpolationError,set 
- bdb: __module__,get_file_breaks,clear_bpbynumber 
- types: __module__,IntType,TypeType 
- strop: 
- _functools: 
- keyword: iskeyword,main,kwlist 
- thread: 
- StringIO: __module__,readlines,getvalue 
- bisect: insort_right,bisect,bisect_left 
- pickle: EMPTY_DICT,NEWTRUE,TypeType 
- signal: 
- traceback: print_stack,print_exception,print_last 
- difflib: _count_leading,heapq,_namedtuple 
- marshal: 
- linecache: updatecache,clearcache,__all__ 
- itertools: 
- posix: 
- doctest: REPORT_UDIFF,get_doctest,_parse_example 
- unittest: parseArgs,assertNotEquals,__str__ 
- time: 
- sre_parse: _PATTERNENDERS,SRE_FLAG_UNICODE,AT_END 
- os: pardir,__module__,sep 
- pdb: do_enable,help,help_run 
- dis: hasjrel,hasconst,HAVE_ARGUMENT 

當我的模塊剛在輸入情況:

​​

Here我找到了一些解決方案,但我也可以不適用他們或他們有一些問題或不工作。

如何獲取哪些用戶定義的模塊已導入?

回答

0

如果仔細閱讀示例,您將看到modulefinder.ModuleFinder報告的是導入的模塊,而不僅僅是存在導入語句的模塊。這是因爲一個模塊可以導入其他模塊,這又可以導入其他模塊,等等。

我懷疑你的程序,主要是由於導入unittest(這是一個複雜的模塊),確實導入了所有這些模塊。如果您不相信,請修改程序以打印出sys.modules的密鑰,這是查找已導入哪些模塊的簡單方法。

+0

是的,但我怎麼能過濾它只是我定義的那些,就像rnaspace.core.sequence導入序列需要什麼? – Llopis