이름에 대시가있는 기존 Python 모듈이 있습니다. foo-bar.py
모듈 이름을 변경하는 것은 모듈이 공유되기 때문에 피하고 싶은 것이며, 특별한 경우가 작동하도록 사용되는 모든 위치를 추적해야합니다.
이름에 일반적으로 금지 된 ‘-‘가 포함 된 모듈을로드하는 방법이 있습니까?
(나는 이것이 모범 사례가 아니라는 것을 이해합니다. 그러나이 상황에서는 훨씬 더 큰 응용 프로그램 세트를 재 설계하고 테스트하지 않는 것을 선호합니다. 또한 회사 마스터가 시간을내어 그러한 변화.)
답변
을 사용하여 할 수 있습니다 __import__()
. 예를 들면 :
foobar = __import__("foo-bar")
하지만 대신 모듈의 이름을 바꿔야합니다. 이렇게하면 모듈의 파일 이름이 프로그램에서 사용되는 식별자와 다른 경우 혼동을 피할 수 있습니다.
답변
나는이 질문이 이미 질문자 만족에 대한 답변을 받았음을 알고 있지만 여기에를 사용하는 것보다 약간의 장점이 있다고 생각하는 또 다른 답변이 __import__()
있습니다.
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
문서에 따르면 :
"This provides an implementation of import which is portable to any
Python interpreter. This also provides an implementation which is
easier to comprehend than one implemented in a programming language
other than Python."
Python 2.7
+ 만
답변
하이픈 대신 밑줄을 사용해보십시오.
pymysql_utils 가져 오기
import pymysql-utils가 pip에서 사용하는 모듈의 이름 이었지만 나를 위해 일했습니다.