반응형
파이썬에서 조건부 모듈 가져 오기
내 프로그램에서 사용자가 사용하는 OS가 Windows인지 Linux인지에 따라 simplejson 또는 json을 가져오고 싶습니다. 사용자의 입력으로 OS 이름을 사용합니다. 이제 다음을 수행하는 것이 맞습니까?
osys = raw_input("Press w for windows,l for linux")
if (osys == "w"):
import json as simplejson
else:
import simplejson
이 관용구가 많이 사용되는 것을 보았으므로 OS 스니핑을 할 필요조차 없습니다.
try:
import json
except ImportError:
import simplejson as json
제목 의 질문에 대답 하지만 특정 사례가 아닌 질문에 대답하려면 완벽하게 맞습니다. 수 많은 패키지 가이 작업을 수행합니다. 사용자에 의존하는 대신 OS를 직접 파악하는 것이 좋습니다. pySerial이 예제로 수행합니다.
import sys
if sys.platform == 'cli':
from serial.serialcli import Serial
else:
import os
# chose an implementation, depending on os
if os.name == 'nt': # sys.platform == 'win32':
from serial.serialwin32 import Serial
elif os.name == 'posix':
from serial.serialposix import Serial, PosixPollSerial, VTIMESerial # noqa
elif os.name == 'java':
from serial.serialjava import Serial
else:
raise ImportError(
"Sorry: no implementation for your platform ('{}') available".format(
os.name
)
)
이것은 당신이 가정하고 특정 인터페이스 / 기능이있을 것이라는 강력한 보증이 필요한 경우에만 사용해야합니다 : 예를 들어 'file' /dev/ttyX
. 귀하의 경우 : JSON을 다루는 경우 실제로 OS마다 다르며 패키지가 존재하는지 여부 만 확인하고 있습니다. 이 경우 try
가져 와서 except
실패하면 if로 대체하십시오.
try:
import some_specific_json_module as json
except ImportError:
import json
json 또는 simplejson을 OS 플랫폼과 바인딩하는 데 사용하지 않는 것이 좋습니다. simplejson은 json의 최신 고급 버전이므로 먼저 가져와야합니다.
파이썬 버전을 기반으로 json 또는 simplejson을 가져 오는 방법을 시도 할 수 있습니다
import sys
if sys.version_info > (2, 7):
import simplejson as json
else:
import json
참고 URL : https://stackoverflow.com/questions/3496592/conditional-import-of-modules-in-python
반응형
'Programming' 카테고리의 다른 글
인터페이스와 추상 클래스 (0) | 2020.07.15 |
---|---|
사용자가 그룹의 구성원인지 테스트하기 위해 LDAP 쿼리를 작성하는 방법은 무엇입니까? (0) | 2020.07.15 |
사람들이 C / C ++에서 가정하지 않은 가정을 보여주기위한 교육 도구에는 무엇이 있습니까? (0) | 2020.07.15 |
정수에서 BigInteger로 변환 (0) | 2020.07.15 |
https를 통한 GitHub 인증 실패, 잘못된 이메일 주소 반환 (0) | 2020.07.15 |