반응형
모듈 이름에 '-'대시 또는 하이픈이있는 경우 모듈을 가져 오는 방법은 무엇입니까?
foo-bar.py를 가져오고 싶습니다. 이것은 작동합니다 :
foobar = __import__("foo-bar")
이것은하지 않습니다 :
from "foo-bar" import *
내 질문 : 위 형식을 사용하여 from "foo-bar" import *
모듈이있는 모듈을 가져올 수있는 방법이 -
있습니까?
당신은 할 수 없습니다. foo-bar
식별자가 아닙니다. 파일 이름을foo_bar.py
편집 :import
목표가 아닌 경우 (에서와 같이 무슨 일이 일어나 든 상관 sys.modules
없이 가져 오기 위해 필요하지 않음) 파일의 모든 전역을 자신의 범위로 가져 오는 것만으로도 사용할 수 있습니다execfile
# contents of foo-bar.py
baz = 'quux'
>>> execfile('foo-bar.py')
>>> baz
'quux'
>>>
Python 이름 지정 규칙과 일치하도록 모듈의 이름을 바꿀 수없는 경우 중개자 역할을 할 새 모듈을 작성하십시오.
---- foo_proxy.py ----
tmp = __import__('foo-bar')
globals().update(vars(tmp))
---- main.py ----
from foo_proxy import *
Python 3.1부터 importlib를 사용할 수 있습니다.
import importlib
foobar = importlib.import_module("foo-bar")
( https://docs.python.org/3/library/importlib.html )
원본 파일의 이름을 바꿀 수 없으면 심볼릭 링크를 사용할 수도 있습니다.
ln -s foo-bar.py foo_bar.py
그럼 당신은 할 수 있습니다 :
from foo_bar import *
다른 사람이 파이썬 명명에서 "-"를 사용할 수 없다고 말한 것처럼 많은 해결 방법이 있습니다. 하나의 해결 방법은 경로에서 여러 모듈을 추가 해야하는 경우 유용합니다. sys.path
예를 들어 구조가 다음과 같은 경우 :
foo-bar
├── barfoo.py
└── __init__.py
import sys
sys.path.append('foo-bar')
import barfoo
반응형
'IT story' 카테고리의 다른 글
MP3 파일의 ID3 데이터보기 / 편집 (0) | 2020.06.09 |
---|---|
"모호한 리디렉션"오류 발생 (0) | 2020.06.09 |
Visual Studio 2012 또는 Visual Studio 2013에서 이전 MVC 프로젝트를 어떻게 열 수 있습니까? (0) | 2020.06.09 |
동일한 열 값을 가진 mysql 테이블에서 특정 행을 삭제하는 방법은 무엇입니까? (0) | 2020.06.09 |
lodash로 객체의 키를 필터링하는 방법은 무엇입니까? (0) | 2020.06.09 |