는 방법을 참조 python 패키지 파일 이름 기간 동안 포함
-
11-09-2019 - |
문제
내가 사용하는 장고가 이라는 파일 models.admin.py 나는 다음을 수행하려는 아이디어에서 models.py:
from "models.admin" import *
그러나 나는 구문 오류가 발생한을 갖는다.하지만 만약 내가 그냥
from models.admin import *
음"ImportError:모듈이 없습니다.admin"
방법은 없을 가져올 파일에 있는 파일의 기간에 그것의 이름은?
해결책
사실, 당신 ~할 수 있다 유효하지 않은 모듈을 가져옵니다. 그러나 당신은 사용해야합니다 imp
이를 위해, 예를 들어 파일의 이름이 지정되었다고 가정합니다 models.admin.py
, 당신은 할 수 있습니다
import imp
with open('models.admin.py', 'rb') as fp:
models_admin = imp.load_module(
'models_admin', fp, 'models.admin.py',
('.py', 'rb', imp.PY_SOURCE)
)
그러나 문서를 읽으십시오 imp.find_module
그리고 imp.load_module
사용하기 전에 사용하기 전에.
다른 팁
만약 너라면 진짜 IMP 모듈을 사용하여 비정상적인 파일 이름 (예 : '.py'이전)을 사용하여 모듈을 가져올 수 있습니다.
>>> import imp
>>> a_b = imp.load_source('a.b', 'a.b.py')
>>> a_b.x
"I was defined in a.b.py!"
그러나 그것은 일반적으로 나쁜 생각입니다. 패키지를 사용하려고 할 가능성이 높습니다.이 경우 "b.py"라는 파일을 포함하는 "a"라는 디렉토리를 만들어야합니다. 그런 다음 "AB 가져 오기"가 A/B.Py를로드합니다.
파일이 호출됩니다 models/admin.py
. (원천)
즉, 그것은 호출되어야합니다 admin.py
호출 된 디렉토리에서 models
.
그런 다음 사용하여 가져올 수 있습니다 from models.admin import *
, 그것이 당신의 파이썬 경로에 있다고 가정합니다.
아니요, 이름에 기간 (또는 물음표 또는 느낌표 등)이 포함 된 경우 Python 파일을 모듈로 가져올 수 없습니다. 파이썬 모듈의 이름 (.py 포함되지 않음)은 유효한 Python 이름이어야합니다 (즉, 변수 이름으로 사용할 수 있음).