/
Search
Duplicate

python 모듈을 상대적으로 불러오는 작업이 어떨 때는 실행되고 어떨 때는 실행되지 않는데 왜일까? (패키지 내부에서, 패키지 외부에서)

상태
✅ 해결된 궁금증
생성일
2021/07/26 07:27
관련태그
1 more property

패키지 밖에서

어떤 패키지를 우리는 무심코 pip 를 활용해서 설치한다. 컴퓨터에서 일반적으로 (리눅스에서) 무엇인가를 설치한다는 것은, 정해진 경로에 파일을 만들어넣는 것이다. 리눅스의 경우 의 내용을 빌리면, 어떤 패키지를 설치한다는 행위는 다음과 같다. 문장에 잡음이 있지만 핵심은 "적절한 위치" 로 복사하는 것이다. 여기서 "적절한 위치" 란 환경변수에 명시되어 있는 공간이라고 할 수 있겠다.
인용
그렇다면 파이썬 패키지를 설치한다는 것은 무엇일까? 파이썬이 패키지나 모듈을 읽을 수 있는 경로에 파이썬 파일들을 잘 넣어준다는 것을 의미한다. 우리가 pip 를 통해 설치했을 때, import numpy as np 같은 것들이 잘 작동했던 이유는 pythonpath (sys.path) 에 기록되어 있는 경로에 numpy 라는 패키지나 모듈이 있었기 때문이다. 이 경로에 적절히 패키지를 깔아주고 잘 지울 수 있도록 도와주는 것이 pipsetuptool 과 같은 도구라고 할 수 있다.
추가내용 참고
2.
그래서 어떨 때는 import 되고 어떨 때는 안되는 것은, 내가 개발한 파이썬 패키지 내에서 내 마음대로 조작해 둔 경로가 있을 땐 자기 마음대로 잘 동작을 한다고 하더라도 이것을 배포할 때에는 setup.py 와 pip 가, 내 패키지를 다운로드받은 사람이 설치할 수 있도록 만들어 두어야 하는 것이다.
추가내용 참고
1.

패키지 내에서

root
projectroot
modules
__init __.py
structures
__init __.py
board.py
display
__init __.py
run.py
~/projectroot$ python3 -m modules.display.run
Python
복사
이 문장 실행이 안 된다.
아래 내용을 통해 해결됨.
2.