티스토리 뷰

setup.py 파일 만들기

from distutils.core import setup

setup(
        name = 'nester',
        version = '1.0.0',
        py_modules = ['nester'],
        author = 'misun',
        author_email = 'xxx@gamil.com',
        url = 'http://come2misun.tistory.com',
        description = 'test',
    )

sdist배포 패키지 만들기

D:\headfirstpython\nester>python setup.py sdist
running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

warning: sdist: standard file not found: should have one of README, README.txt

writing manifest file 'MANIFEST'
creating nester-1.0.0
making hard links in nester-1.0.0...
hard linking nester.py -> nester-1.0.0
hard linking setup.py -> nester-1.0.0
creating 'dist\nester-1.0.0.zip' and adding 'nester-1.0.0' to it
adding 'nester-1.0.0\nester.py'
adding 'nester-1.0.0\PKG-INFO'
adding 'nester-1.0.0\setup.py'
removing 'nester-1.0.0' (and everything under it)

install배포 패키지 설치하기

D:\headfirstpython\nester>python setup.py install
running install
running build
running build_py
creating build
creating build\lib
copying nester.py -> build\lib
running install_lib
copying build\lib\nester.py -> C:\Users\misun\AppData\Local\Programs\Python\Python35-32\Lib\site-packages
byte-compiling C:\Users\misun\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\nester.py to nester.cpython-35.pyc
running install_egg_info
Writing C:\Users\misun\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\nester-1.0.0-py3.5.egg-info

모듈 임포트하여 실행하기

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import nester
>>> cast = ['Palin', 'Cleese', 'Idle', 'Jones', 'Giliam', 'Chapman']
>>> print(cast)
['Palin', 'Cleese', 'Idle', 'Jones', 'Giliam', 'Chapman']
>>> print_lol(cast)
Traceback (most recent call last):
  File "", line 1, in 
    print_lol(cast)
NameError: name 'print_lol' is not defined
>>> nester.print_lol(cast)
Palin
Cleese
Idle
Jones
Giliam
Chapman
>>> 

모듈이름.함수이름()

모듈에 있는 코드는 네임스페이스와 연결된다.

기본적으로 __main__이라는 네임스페이스와 연결

네임스페이스와 제대로 연결되지 않을 경우 다음과 같은 에러 발생

NameError: name 'print_lol' is not defined


__main__
파이썬 기본 네임스페이스
__builtins__
내장함수 네임스페이스

※내장함수는 일반적인 문제에 대해 일반적인 해결책을 제시


인자를 이용해서 행위 제어하기

ver 1.2.0 : 들여쓰기 기능 추가

ver 1.3.0 : 들여쓰기 기능 on/off 기능 추가


비슷한 모듈을 여러개 만드는 것은 낭비! 유지보수도 끔직해질 뿐

indent=False,level =0

선택적인자
함수 인자에 기본값을 지정하면 그 인자는 선택적 인자가 된다.
버전별 기능 관리시 하위버전의 호환성을 유지한다.
댓글