2011-07-15 15 views
8

Mam plik setup.py który wygląda tak:setuptools: pliki danych dołączone `bdist` ale nie z` sdist`

#!/usr/bin/env python 
from setuptools import setup, find_packages 

setup(
    name="foo", 
    version="1.0", 
    packages=find_packages(), 
    include_package_data=True, 
    package_data={ 
     "": ["*"], 
    }, 
) 

oraz pakiet foo, który wygląda tak:

foo/__init__.py 
foo/bar.txt 

Po uruchomieniu setup.py bdist plik bar.txt jest (poprawnie) włączony do dystrybucji ... Ale kiedy używam setup.py sdist, nie jest.

Co z tym? Czy nie rozumiem znaczenia package_data? A może to dziwactwo z setuptools?

Odpowiedz

10

Istnieją różne źródła wyboru tych plików. Plik package_data służy do instalacji z drzewa źródłowego. Do zbudowania pakietu źródłowego potrzebny jest również plik MANIFEST.in. Powinien zawierać coś w rodzaju recursive-include *.txt lub czegokolwiek, czego potrzebujesz.

+2

Ah ... Więc w jakich okolicznościach użyłbym 'package_data'? –

+5

Ten manifest określa, co jest zawarte w dystrybucji źródłowej, ale parametr package_data służy do określenia plików danych, które chcesz zainstalować wraz ze źródłowymi plikami Pythona w lokalizacji pakietu (site-packages). Te pliki w MANIFEST.in mogą nie zawierać dokumentów lub innych plików, których nie chcesz tam instalować, ale nie chcesz ich w dystrybucji źródłowej. – Keith