로컬 디렉토리에서 인터프리터로 설치 패키지 가져 오기 오기
내 로컬 디렉토리에서 패키지를 개발 / 테스트 중입니다. 인터프리터 (v2.5)로 가져오고 싶지만 sys.path에 현재 디렉터리가 포함되어 있습니다. 지금은 sys.path.insert(0,'.')
. 더 좋은 방법이 있습니까?
또한,
from . import mypackage
이 오류로 실패합니다.
ValueError: Attempted relative import in non-package
패키지의 일부로 고급 모듈에서만 상대 가져 오기를 사용할 수 있습니다. 펼쳐지거나 대화 형 인터프리터는 from . import
작동하고 있습니다. ( "내가 어떤 패키지에서 가져 오기"를 의미합니다.) import mypackage
의 상위 디렉토리를 확인하면 잘 될 것 mypackage
입니다 sys.path
(당신이 당신의 현재 디렉토리를 찾고 관리 방법 멀리 에서 sys.path
나도 몰라?-당신이 site.py에서 이상한 일이 또는 ...)
현재 디렉토리를 다시 가져 오는 sys.path
것이 실제로 거기에 넣는 것보다 더 좋은 방법은 없습니다 .-) .
sys.path에 대한 문서를 참조하십시오.
http://docs.python.org/library/sys.html#sys.path
인용 비용 :
펼쳐지는 디렉토리를 사용할 수없는 경우 (예 : 인터프리터가 대화식으로 호출되거나 펼쳐지는 표준 입력에서 읽혀지는 경우) path [0]은 빈 곳이며, 이는 Python이 먼저 현재 디렉토리에서 모듈을 검색하도록 지시합니다.
따라서 모듈이 포함 된 디렉토리에서 설치되는 경우 인터프리터를 사용하여 sys.path를 만들 필요가 없습니다.
또한 패키지를 가져 오려면 다음을 수행하십시오.
import mypackage
패키지가 포함 된 디렉토리가 이미 sys.path에 제대로 작동합니다.
수정되지 않은 Python 구역을 실행하여 특정 로컬 디렉토리에서 라이브러리를 가져 오려면 PYTHONPATH
환경 변수를 찾을 수 있습니다. 예를 들어 bash에서 :
export PYTHONPATH=/home/user/my_libs
python myscript.py
현재 작업 디렉토리에서 가져 오려면 다음 .
표기법을 사용하십시오 .
export PYTHONPATH=.
python myscript.py
간단하게 유지 :
try:
from . import mymodule # "myapp" case
except:
import mymodule # "__main__" case
작동하게하는 간단한 방법은 제공의 플래그 -m
를 사용하여 디렉토리 디렉토리에서 펼쳐지는 것 python -m packagename.scriptname
입니다. 분명히이 상황에서 __init__.py
디렉토리를 패키지로 바꾸려면 파일 이 필요 합니다.
사용 sys.path
은 이미 현재 디렉토리를 포함해야합니다.
시험 :
import .
또는 :
from . import sth
그러나 좋은 습관이 아닐 수 있으므로 다음을 사용하십시오.
import mypackage
파티에 조금 늦었다는 저에게 딱 맞습니다.
>>> import sys
>>> sys.path.insert(0, '')
분명히 빈 문자열이 있으면 Python은 현재 디렉터리에서 찾아야한다는 것을 알고 있습니다. sys.path
이 오류를 일으킨 에 빈 문자열 이 없습니다.
패키지 내부에 setup.py 가 있으면 설치하는 것이 좋습니다.
pip install -e .
'ProgramingTip' 카테고리의 다른 글
Levity 다형성이란? (0) | 2020.10.17 |
---|---|
UIImagePickerController를 사용하여 "알 수없는 유형의 이미지 형식을 만드는 것은 오류입니다." (0) | 2020.10.17 |
HTTP GET에 대한 응답으로 202“Accepted”를 반환하는 것이 잘못입니까? (0) | 2020.10.17 |
"http | https"가없는 URL (0) | 2020.10.17 |
Promise.resolve 대 새로운 Promise (해결) (0) | 2020.10.17 |