2012-08-07 12 views
43

静的ファイルを含めることは不可能です!私はチュートリアルやドキュメントで見つけたすべてのものを試してみましたが、無駄のすべての...setuptools - pythonパッケージに静的ファイルを含める方法

私は./static/data.txtを含めたい、私のコードがある:

# 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", 
    ], 
) 

ファイルシステム:

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

実行されている出力: $の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) 

とtxtが追加されていません! static/data.txtもPotato/potatoData.txtもありません。

何が欠けていますか? ありがとう! (

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

とそれが働いた:

答えて

55

はちょうどこのようになりますsetup.pyの同じディレクトリにMANIFEST.inを追加

を、これが出て最善の方法である場合、私は知らない、のように見えますsetup.pyは、それ自体でこれを行うが、とにかく働いべきだと...

+1

作品を以下!明らかに、MANIFEST.inは、* setup.py/distutilsがデフォルトでインクルードするのに十分なスマートなものに加えて、*インクルードするファイルを選び出します。 – chbrown

+13

これに加えて上記の 'include_package_data = True'を追加すると、私はうまく動作しました。どちらも実行する必要がありました:マニフェストファイルとsetup.pyディレクティブ。 – djhaskin987

+0

"include * .txt"を追加するだけです。 Works great thnx – Priyeshj

19

は、再帰的にすべてのファイルを含める:

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

ここでproject_nameは、setup.pyファイルがある同じ行のフォルダです。

10

文書によれば、パッケージデータファイルを含むthree waysがあります。ジャガイモとトマトの2つのパッケージがあります。静的ディレクトリはこれらのパッケージのいずれにも入っていないので、setup.pyのpackage_dataディクショナリが動作していなかったのはそのためです。マニフェストオプションでは、setup.pyでinclude_package_dataがTrueに設定されている必要があります。非パッケージのデータファイルにアクセスするには、hereの方法で行うことができます。

4

使用

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

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

これはあまりにも包括的かもしれません。 –