ProgramingTip

로컬 디렉토리에서 인터프리터로 설치 패키지 가져 오기 오기

bestdevel 2020. 10. 17. 11:50
반응형

로컬 디렉토리에서 인터프리터로 설치 패키지 가져 오기 오기


내 로컬 디렉토리에서 패키지를 개발 / 테스트 중입니다. 인터프리터 (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 .

참고 URL : https://stackoverflow.com/questions/1112618/import-python-package-from-local-directory-into-interpreter

반응형