수색…


비고

pypa 샘플 프로젝트 에는 광범위한 기능 setup-tools가 제공 해야하는 완벽하고 쉽게 수정할 수있는 템플릿 setup.py 가 포함되어 있습니다.

소개

모든 패키지에는 패키지를 설명하는 setup.py 파일이 필요합니다.

간단한 패키지에 대한 다음 디렉토리 구조를 고려하십시오.

+-- package_name
|       |
|       +-- __init__.py
|       
+-- setup.py

__init__.pydef foo(): return 100 라인 만 포함합니다 def foo(): return 100 .

다음 setup.py 는 패키지를 정의합니다 :

from setuptools import setup


setup(
    name='package_name',                    # package name
    version='0.1',                          # version
    description='Package Description',      # short description
    url='http://example.com',               # package URL
    install_requires=[],                    # list of packages this package depends
                                            # on.
    packages=['package_name'],              # List of module names that installing
                                            # this package will provide.
)

virtualenv 는 다른 Python 환경을 수정하지 않고 패키지 설치를 테스트하는 데 적합합니다.

$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo() 
100

PyPI에 업로드 중

setup.py 가 완전히 작동하면 ( 소개 참조) 패키지를 PyPI 에 업로드하는 것이 매우 쉽습니다.

.pypirc 파일 설정

이 파일에는 계정을 인증하기위한 로그인 및 암호가 저장됩니다. 일반적으로 홈 디렉토리에 저장됩니다.

# .pypirc file

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

패키지 업로드에 twine 를 사용하는 것이 더 안전 하므로 설치되어 있는지 확인하십시오.

$ pip install twine

testpypi에 등록 및 업로드 (선택 사항)

참고 : PyPI는 업로드 된 패키지를 덮어 쓸 수 없으므로 먼저 testpypi와 같은 전용 테스트 서버에서 배포를 테스트하는 것이 좋습니다. 이 옵션에 대해 설명합니다. 달력 버전 관리 또는 의미 버전 관리 와 같은 업로드 전에 패키지의 버전 관리 체계 를 고려하십시오.

testpypi 에서 로그인하거나 새 계정을 만드십시오 . 1 회 이상 등록하는 것이 해롭지는 않지만 등록은 처음에만 필요합니다.

$ python setup.py register -r pypitest

패키지의 루트 디렉토리에있는 동안 :

$ twine upload dist/* -r pypitest

이제 패키지가 계정을 통해 액세스 할 수 있습니다.

테스트

테스트 가상 환경을 만드십시오. testpypi 또는 PyPI에서 패키지를 pip install 하십시오.

# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...

(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100

패키지가 성공적이면 패키지를 가져올 수 없습니다. 마지막으로 PyPI에 업로드하기 전에 API 테스트를 고려할 수도 있습니다. 테스트하는 동안 패키지에 실패한 경우 걱정하지 마십시오. 여전히 문제를 해결하고 testpypi에 다시 업로드 한 다음 다시 테스트 할 수 있습니다.

PyPI에 등록 및 업로드

twine 가 설치되어 있는지 확인하십시오.

$ pip install twine

PyPI 에서 로그인하거나 새 계정을 만드십시오.

$ python setup.py register -r pypi
$ twine upload dist/*

그게 다야! 패키지가 현재 게시 중 입니다.

버그를 발견하면 패키지의 새 버전을 업로드하기 만하면됩니다.

선적 서류 비치

패키지에 적어도 어떤 종류의 문서를 포함시키는 것을 잊지 마십시오. PyPi는 기본 서식 언어 인 reStructuredText를 사용 합니다.

Readme

패키지에 큰 설명서가없는 경우 다른 사용자가 README.rst 파일을 도울 수있는 내용을 포함하십시오. 파일이 준비되면 PyPi가 파일을 보여 주도록 알려주는 파일이 필요합니다.

setup.cfg 파일을 setup.cfg 두 줄을 입력하십시오.

[metadata]
description-file = README.rst

Markdown 파일을 패키지에 넣으려고하면 PyPi는 서식없이 순수 텍스트 파일로 읽습니다.

라이센스

OpenSource 라이센스 중 하나를 사용하여 LICENSE.txt 파일을 패키지에 넣으면 사용자에게 상용 프로젝트와 같이 패키지를 사용할 수 있는지 또는 라이센스에 라이센스 를 사용할 수 있는지 여부를 알릴 수 있습니다.

보다 읽기 쉬운 방법으로 일부 라이센스는 TL; DR에 설명되어 있습니다.

패키지를 실행 가능하게 만들기

패키지가 라이브러리 일뿐만 아니라 패키지가 설치 될 때 쇼케이스 또는 독립 실행 형 응용 프로그램으로 사용할 수있는 코드가있는 경우 해당 코드를 __main__.py 파일에 넣습니다.

__main__.pypackage_name 폴더에 넣으십시오. 이렇게하면 콘솔에서 직접 실행할 수 있습니다.

python -m package_name

사용 가능한 __main__.py 파일이 없으면이 명령으로 패키지가 실행되지 __main__.py 오류가 인쇄됩니다.

python : package_name.__main__; 이라는 이름의 모듈이 없습니다 package_name.__main__; 'package_name'은 패키지이므로 직접 실행할 수 없습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow