ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PYPI 업로드시, 옵션 선택하기
    저장소/PYPI 2016. 5. 21. 12:41

    PYPI에 업로드할 때, 파일 또는 패키지를 어떻게 올릴지 정할 수 있습니다. 아래에서는 PYPI에 어떠한 옵션으로 올릴 수 있는지 확인하겠습니다.

    SETUP의 Attribute


    setup의 attribute는 다음과 같이 정의합니다.

    from distutils.core import setup
    
    setup(
        name='untitled8',
        version='0.3',
        package_dir={'':'untitled8'},
        author='lee',
        author_email='lee@lee.com',
        description='test_django_project method',
    )
    

    name

    pypi 서버에 올릴 모듈 또는 패키지의 이름입니다.

    version

    pypi 서버에 올릴 버전입니다. 만약 이름과 버전이 이미 pypi 서버에 올라와 있는 경우, 403 (404?)에러를 뱉어줍니다.

    패키지? 모듈?

    사용자가 pypi 서버에 올릴 때, 모듈로 업로드할 지, 패키지로 업로드할 지 선택을 할 수 있습니다.

    모듈 또는 파이썬 파일

    모듈 또는 파이썬 파일만 올릴 땐 다음 attribute를 사용합니다.

    from distutils.core import setup
    setup(name='foo',
          version='1.0',
          py_modules=['foo']
          )

    py_modules 안에 들어가는 내용은 사용자가 올릴 파이썬 파일명과 동일해야 합니다.( 여러 개 선택 가능)  

    패키지

    패키지는 다음과 같은 구조로 되어 있다고 가정하겠습니다.

    • untitled8
      • chartcheck
        • migrations
      • library
      • templates
      • untitled8
      • manage.py
      • test.py

    패키지 추가 attribute에는 packages 와 package_dir 이 있습니다.

    packages attribute는 리스트로 추가하고자 하는 앱의 이름을 적습니다. 또한 리스트에 적힌 이름의 폴더 안에 __init__.py가 있다는 가정하에 pypi 서버에 업로드 하는 것입니다.

    package_dir은 딕셔너리로 좌변은 사용자가 쓰고자 하는 이름, 우변은 추가하고자 하는 앱의 이름을 적습니다. package_dir로 사용자가 쓰고자 하는 이름을 정의한 다음, packages로 앱을 추가해야 합니다.

    프로젝트 내 파이썬 파일 업로드

    프로젝트 아래의 파이썬 파일만 업로드하고 싶을 때 아래와 같이 사용합니다.

    from distutils.core import setup
    setup(name='foobar',
          version='1.0',
          packages=['']
          )

    위와 같이 packages 어레이 중 '' 이 있을 경우 앱이 아닌 프로젝트 안에 존재하는 파이썬 파일 전체를 pypi서버에 전송합니다. 따라서 pypi 서버에서 해당 패키지를 내려받으면 manage.py와 test.py가 있는 것을 확인할 수 있습니다.

    프로젝트 내 앱 업로드

    프로젝트 아래의 앱을 업로드하고 싶을 때 아래와 같이 사용합니다.

    from distutils.core import setup
    setup(name='foobar',
          version='1.0',
          packages=['chartcheck','library']
          )

    위와 같이 사용할 경우, chartcheck와 library 앱과 그 안의 파이썬 파일이 pypi 서버에 업로드됩니다. (migrations 제외)

    프로젝트 내 앱 안의 서브 앱 업로드

    프로젝트 내 앱 안의 서브 앱 업로드는 아래와 같이 사용합니다.

    from distutils.core import setup
    setup(name='foobar',
          version='1.0',
          packages=['chartcheck','chartcheck.migrations']
          )

    pypi에서 확인하면 chartcheck 폴더 안에 파이썬 파일과 migrations 폴더가 존재합니다.

    프로젝트 내 모든 파일 한번에 업로드

    프로젝트 내 모든 형식의 파일 및 폴더 업로드는 아래와 같이 사용합니다.

     from distutils.core import setup
    setup(
        name='untitled8',
        version='1.993',
        packages=[''],
        package_data={'':['*']},
        author='lee',
        author_email='lee@lee.com',
        description='test_django_project method',
    )
    
    

    package_data는 dictonary 타입이며 좌변에는 파일 경로를, 우변에는 리스트 내에 업로드 하고자 하는 파일을 작성하면 됩니다. 위 예제의 경우, 좌변은 ''으로 root 디렉토리를 선택했으며 우변은 ' * '으로 전체 파일을 선택했습니다.

    기타

    여러 attribute가 존재하고 아래와 같이 사용합니다.

    from distutils.core import setup
    
    setup(name='Distutils',
          version='1.0',
          description='Python Distribution Utilities',
          author='Greg Ward',
          author_email='gward@python.net',
          url='https://www.python.org/sigs/distutils-sig/',
          packages=['distutils', 'distutils.command'],
         )

    packages_data 설명



    위에서 설명한 것과 같이 package_data={'':['*']}를 사용하여 프로젝트 내 전체 파일을 업로드할 수 있습니다. 

    packages=['']
    package_data={'':[*.py]}
    #를 할 경우 프로젝트 내 전체 파일이 아닌 루트폴더에 있는 파이썬 파일만 업로드 됩니다.
     
    packages=['','templates']
    package_data={'':[*.py,], 'templates':[*.html]}
    #일 경우, 루트 쪾에 있는 파이썬 파일과 templates폴더 안의 모든 html 파일이 업로드 됩니다.


    댓글