2012-11-29 2 views
5

그래서 setuptool 패키지를 만들고 있습니다.Setuptools. 패키지에 여분의 데이터 폴더와 모든 폴더가 포함되도록하는 방법

패키지에 여분의 데이터 파일을 포함하려면 setup() 안에 data_file 매개 변수를 사용해야합니다.

코드 예제 :이 예에서는

datadir = os.path.join('share','data') 
datafiles = [(datadir, [f for f in glob.glob(os.path.join(datadir, '*'))])] 
import metainfo # a file with relevant information 
setup(
    name    = 'yourpackage', 
    version   = metainfo.version, 
    maintainer  = metainfo.maintainer, 
    maintainer_email = metainfo.maintainer_email, 
    author   = metainfo.authors, 
    author_email  = metainfo.authors, 
    description  = metainfo.description, 
    keywords   = metainfo.keywords, 
    long_description = metainfo.long_description, 

    # package installation 
    packages = find_packages('src'), 
    package_dir = package_dir, 

    data_files = datafiles, 
} 

datafile 변수가 재귀 적 폴더가 포함 된 파일의

[('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt'])] 

하지만, 내 예제는하지 않습니다 목록과 같은 데이터가 포함됩니다. 정보 생성

[ 
    ('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt']), 
    ('share/data/inside', ['share/data/inside/file.iside', 'share/data/inside/file2.inside']), 
    ......... 

] 

답변

9

사용 os.walk() :

나는 매개 변수 FOLDER_PATH로 가져 와서 튜플의 목록을 반환 기능을 필요

datafiles = [(root, [os.path.join(root, f) for f in files]) 
    for root, dirs, files in os.walk(datadir)] 

즉, 절대 경로를 생성 할 수 있습니다를, 필요하다면 변수를 조금 더 처리하여 setup.py 디렉토리에 상대적으로 만들 수 있습니다.

+0

'(directorypath, list_of_files_in_directory)'튜플을 생성하지 않기 때문에'[(root, glob.glob (root /**/*.*, recursive = True)] ' – warownia1

+0

@ warownia1 : * 디렉토리 당 *. –

관련 문제