[python] 이름에 대시 또는 하이픈 (-)이있는 Python 모듈

이름에 대시가있는 기존 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에서 사용하는 모듈의 이름 이었지만 나를 위해 일했습니다.


답변