2017-12-20 30 views
0

다른 데이터 디렉토리와 여러 서브 패키지를 포장 :파이썬 내가 코드 <code>something.py</code>와 함께 <code>foobar</code> 및 <code>alphabet</code> 데이터 디렉토리와 같은 디렉토리의 구조를 가지고

\mylibrary 
    \packages 
     \foobar 
      foo.zip 
      bar.zip 
     \alphabet 
      abc.zip 
      xyz.zip 
      something.py 
    setup.py 

그리고 목적은 사용자가 설치할 핍 수 있도록이다 같은 모듈 :

pip install mylibrary[alphabet] 

는 그리고는 packages/alphabet/* 데이터와 파이썬 코드의 데이터 만 포함 할 수 있습니다. 비슷한 동작이 pip install mylibrary[foobar]에 대해서 가능해야합니다.

사용자가 지정하지 않고 설치하는 경우

는 :
pip install mylibrary 

는 그런 다음 packages/에서 모든 데이터 디렉토리를 포함합니다.

현재, 나는 다음과 같은 Python3.5와 setup.py 쓰기 시도했다 : 사용자가 pip install mylibrary을 수행 할 때 모든 데이터 디렉토리와 분포를 생성합니다

import glob 
from setuptools import setup, find_packages 


setup(
    name = 'mylibrary', 
    packages = ['packages'], 
    package_data={'packages':glob.glob('packages' + '/**/*.txt', recursive=True)}, 
) 

.

setup.py을 어떻게 변경하여 pip install mylibrary[alphabet]과 같은 특정 pip 설치가 가능합니까? 사전에

setup(
    …, 
    extras = { 
     'alphabet': ['alphabet'], 
     'foobar': ['foobar'], 
    } 
) 

키 : 그 foobarextras 등을 alphabet를 추가 한 후 pip install mylibrary[alphabet]

pip install mylibrary 
pip install alphabet 

의미로

+0

'setup.py'는 패키지가 일반 또는 추가로 설치되는지 여부를 알 수 없습니다. 이 정보는 설치 도구 (예 :'pip' 또는'easy_install')에 의해서만 사용되며 설정 스크립트로 전달되지 않습니다. 설정 스크립트에서 정의한'엑스트라 '는 대충 말하면 설치 프로그램에 대한 추가 지시 사항입니다 : "엑스트라 키워드를 얻으면 패키지와 추가 패키지 번들을 설치해야합니다", 바로 그 것입니다. – hoefling

답변

0

전나무 당신은 패키지와 별도의 패키지로 alphabetfoobar을 게시해야 pip install mylibrary[EXTRA_NAME]에서 사용되는 이름이고, 값은 PyPI에서 설치할 패키지 이름 목록입니다.

추신. 또한 PyPI의 패키지로 제공되지 않는 일부 데이터 파일을 설치하기 위해 추가 기능을 사용할 수 없습니다.