Record
개념
-
주요 명령어
프로젝트 디렉토리 생성
$ mkdir pack
$ cd pack
가상환경 생성
$ python3 -m venv venv
$ source venv/bin/activate
패키지 디렉토리 생성
$ mkdir mypack
$ touch mypack/__init__.py
서브패키지 디렉토리 생성
$ mkdir mypack/pack_a
$ mkdir mypack/pack_b
$ touch mypack/pack_a/__init__.py
$ touch mypack/pack_b/__init__.py
pack_a에 module_a 생성
$ vi mypack/pack_a/module_a.py
module_a.py
def mod_echo_a():
print("This is module echo A")
pack_b에 module_b 생성
$ vi mypack/pack_b/module_b.py
module_b.py
def mod_echo_b():
print("This is module echo B")
test 디렉토리 생성
$ mkdir mypack/test
test에 test.py 생성
$ vi mypack/test/test.py
test.py
from mypack.pack_a import module_a
from mypack.pack_b import module_b
def test():
module_a.mod_echo_a()
module_b.mod_echo_b()
if __name__ == '__main__':
test()
위 작업을 순서대로 따라했다면 다음과 같은 디렉토리 구조가 만들어졌을 것이다.
.
├── mypack
│ ├── __init__.py
│ ├── pack_a
│ │ ├── __init__.py
│ │ └── module_a.py
│ ├── pack_b
│ │ ├── __init__.py
│ │ └── module_b.py
│ └── test
│ └── test.py
└── venv
이 상태에서 test.py를 실행시키면 다음과 같은 오류가 발생한다.
$ python mypack/test/test.py
Traceback (most recent call last):
File "mypack/test/test.py", line 1, in <module>
from mypack.pack_a import module_a
ImportError: No module named 'mypack'
setup.py 생성
$ vi setup.py
setup.py
from setuptools import setup, find_packages
setup(name='mypack', version='1.0', packages=find_packages())
pip install 실행
$ pip install -e .
실행 결과는 다음과 같다.
$ pip install -e .
Obtaining file:///home/nvidia/dev/pack
Installing collected packages: mypack
Running setup.py develop for mypack
Successfully installed mypack-1.0
세팅이 완료 된 후 test.py를 실행한 결과는 다음과 같다.
$ python mypack/test/test.py
This is module echo A
This is module echo B