가져온 모든 모듈을 열거하는 방법은 무엇입니까?
예를 들어이 ['os', 'sys']
코드에서 얻고 싶습니다 .
import os
import sys
답변
import sys
sys.modules.keys()
현재 모듈에 대한 모든 수입품을 얻는 대략적인 방법은 모듈을 검사하는 것 globals()
입니다.
import types
def imports():
for name, val in globals().items():
if isinstance(val, types.ModuleType):
yield val.__name__
로컬 가져 오기 또는와 같은 비 모듈 가져 오기는 반환하지 않습니다 from x import y
. 이것을 val.__name__
사용하면 원래 모듈 이름을 얻을 수 있도록 리턴합니다 import module as alias
. 별명을 원하면 대신 수율 이름.
답변
의 교차점 찾기 sys.modules
와를 globals
:
import sys
modulenames = set(sys.modules) & set(globals())
allmodules = [sys.modules[name] for name in modulenames]
답변
스크립트 외부에서이를 수행하려면 다음을 수행하십시오.
파이썬 2
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script("myscript.py")
for name, mod in finder.modules.iteritems():
print name
파이썬 3
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script("myscript.py")
for name, mod in finder.modules.items():
print(name)
myscript.py에 의해로드 된 모든 모듈을 인쇄합니다.
답변
print [key for key in locals().keys()
if isinstance(locals()[key], type(sys)) and not key.startswith('__')]
답변
수학을 가져온 다음 다시 말해 보자.
>>import math,re
지금 같은 사용법을 볼
>>print(dir())
가져 오기 전과 가져 오기 후에 실행하면 차이를 볼 수 있습니다.
답변
실제로 다음과 함께 잘 작동합니다.
import sys
mods = [m.__name__ for m in sys.modules.values() if m]
가져올 수있는 모듈 이름 으로 목록이 생성 됩니다.
답변
이 코드는 모듈에서 가져온 모듈을 나열합니다.
import sys
before = [str(m) for m in sys.modules]
import my_module
after = [str(m) for m in sys.modules]
print [m for m in after if not m in before]
코드를 실행하기 위해 새 시스템에 어떤 외부 모듈을 설치해야하는지 알고 싶을 때 유용합니다.
sys
가져온 모듈을 나열하지 않습니다 .