2012-08-07 6 views
43

Es ist unmöglich, statische Dateien aufzunehmen! Ich habe versucht, alles, was ich in Tutorien und der Dokumentation gefunden haben, aber alles umsonst ...Wie statische Dateien zu setuptools - python package

ich die ./static/data.txt aufnehmen möchten, gibt mein Code:

# setup.py 
import os,glob 
from setuptools import setup,find_packages 

setup(
    name = "PotatoProject", 
    version = "0.1.1", 
    author = "Master Splinter", 
    author_email = "[email protected]", 
    description = ("The potatoproject!"), 
    url = 'http://www.google.com', 
    license = "BSD", 

    # adding packages 
    packages=find_packages('src'), 
    package_dir = {'':'src'}, 

    # trying to add files... 
    include_package_data = True, 
    package_data = { 
     '': ['*.txt'], 
     '': ['static/*.txt'], 
     'static': ['*.txt'], 
    }, 

    scripts=['src/startPotato'], 
    classifiers=[ 
     "Development Status :: 3 - Alpha", 
     "Topic :: Utilities", 
     "License :: OSI Approved :: BSD License", 
    ], 
) 

das Dateisystem:

. 
├── setup.py 
└── src 
    ├── distutils_setup.py 
    ├── Potato 
    │   ├── __init__.py 
    │   ├── potatoData.txt 
    │   └── printer.py 
    ├── startPotato 
    ├── static 
    │   └── data.txt 
    └── Tomato 
     ├── big.py 
     └── __init__.py 

der Ausgang beim laufen: $ python setup.py Sdist

running sdist 
running egg_info 
creating src/PotatoProject.egg-info 
writing src/PotatoProject.egg-info/PKG-INFO 
writing top-level names to src/PotatoProject.egg-info/top_level.txt 
writing dependency_links to src/PotatoProject.egg-info/dependency_links.txt 
writing manifest file 'src/PotatoProject.egg-info/SOURCES.txt' 
reading manifest file 'src/PotatoProject.egg-info/SOURCES.txt' 
writing manifest file 'src/PotatoProject.egg-info/SOURCES.txt' 
warning: sdist: standard file not found: should have one of README, README.txt 

creating PotatoProject-0.1.1 
creating PotatoProject-0.1.1/src 
creating PotatoProject-0.1.1/src/Potato 
creating PotatoProject-0.1.1/src/PotatoProject.egg-info 
creating PotatoProject-0.1.1/src/Tomato 
making hard links in PotatoProject-0.1.1... 
hard linking setup.py -> PotatoProject-0.1.1 
hard linking src/startPotato -> PotatoProject-0.1.1/src 
hard linking src/Potato/__init__.py -> PotatoProject-0.1.1/src/Potato 
hard linking src/Potato/printer.py -> PotatoProject-0.1.1/src/Potato 
hard linking src/PotatoProject.egg-info/PKG-INFO -> PotatoProject-0.1.1/src/PotatoProject.egg-info 
hard linking src/PotatoProject.egg-info/SOURCES.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info 
hard linking src/PotatoProject.egg-info/dependency_links.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info 
hard linking src/PotatoProject.egg-info/top_level.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info 
hard linking src/Tomato/__init__.py -> PotatoProject-0.1.1/src/Tomato 
hard linking src/Tomato/big.py -> PotatoProject-0.1.1/src/Tomato 
Writing PotatoProject-0.1.1/setup.cfg 
creating dist 
Creating tar archive 
removing 'PotatoProject-0.1.1' (and everything under it) 

und kein TXT hinzugefügt! Nein static/data.txt noch Potato/potatoData.txt ...

Was fehlt mir ?! Danke!

Antwort

55

Just added ein MANIFEST.in im selben Verzeichnis von setup.py, das wie folgt aussieht:

include src/static/* 
include src/Potato/*.txt 

und es funktionierte (:

Ich weiß nicht, ob dies der beste Weg ist, sieht aus wie dass die setup.py dies allein tun sollte, aber arbeitete trotzdem ...

+1

Works! Anscheinend wählt MANIFEST.in die Dateien aus, die * zusätzlich * enthalten sollen, zu denen setup.py/distutils schlau genug ist, um sie standardmäßig einzuschließen. – chbrown

+13

Doing this plus Hinzufügen der 'include_package_data = True 'oben arbeitete von mir. Beides musste gemacht werden: Die Manifest-Datei und die setup.py-Direktive. – djhaskin987

+0

Ich füge einfach "include * .txt" hinzu. Funktioniert super thnx – Priyeshj

19

alle Dateien rekursiv:

recursive-include project_name/templates * 
recursive-include project_name/static * 

wo project_name ist ein Ordner in der gleichen Zeile, wo Sie setup.py Datei haben.

10

Gemäß den Dokumenten gibt es three ways, um Paketdatendateien aufzunehmen. Sie haben zwei Pakete: Kartoffel und Tomate. Das statische Verzeichnis befindet sich in keinem dieser Pakete. Daher funktionierte das Paket_datenverzeichnis in setup.py nicht. Die Manifestoption erfordert, dass include_package_data in setup.py auf True festgelegt ist. Der Zugriff auf Nicht-Paketdatendateien kann auf die Weise erfolgen, die gefunden wurde here.

4

Verwenden folgenden

packages = ['.','templates','static','docs'], 

package_data={'templates':['*'],'static':['*'],'docs':['*'],}, 
+0

Das könnte zu inklusive sein. –

Verwandte Themen