Setuptools - 发送其他文件

时间:2013-08-09 10:17:28

标签: python setuptools

场合

我创建了我的setup.py文件。大多数都是开箱即用的,但我通过运送一些额外的文件有一些麻烦。但是我注意到运行

时我的tar.gz中没有包含以下文件
python setup.py sdist
  • doc files
  • 虚拟文件
  • 服务脚本

doc文件的位置可以是特定于os的。 但我想在 /etc/init.d/ 中看到服务脚本,并在 / etc / package 中看到示例配置(存储在我的doc文件中)。 虚拟文件可以存储在我的包文件夹中。

问题

如何在tar.gz中发送这些文件?

来源

setup.py

from setuptools import setup                                                    

setup(                                                                          
    name="package",                                                             
    version="0.1",                                                              
    description="package Daemon",                                               
    author="me",                                                   
    author_email="my-email",                               
    url="http://my-url",                                             
    package_dir={"package": "src",                                              
                 "package-utils": "src/utils"},                                 
    packages=[                                                                  
        "package",                                                              
        "package.modules",                                                      
        "package.modules.core",                                                 
        "package.modules.config",                                               
        "package.modules.commands",                                             
        "package.modules.dblog",                                                
        "package.utils",                                                        
        "twisted.plugins",                                                      
    ],                       

    package_data={                                                              
        "package": [                                                            
            "src/virtual/cmd/bin/*",                                           
            "src/virtual/cmd/sbin/*",                                          
            "src/virtual/usr/bin/*",                                           
            "src/virtual/files/etc/*",                                         
            "src/virtual/proc/*",                                              
            "src/virtual/*.db"]},                                              

    data_files=[                                                                
        ("/usr/local/doc/package", ["doc/COPYRIGHT",                            
                                    "doc/LICENCE",                              
                                    "doc/README",                               
                                    "doc/sql/mysql.sql",                        
                                    "doc/package.cfg.sample"]),                 
        ("/etc/init.d/", ["src/package"]),                                      
        ("/etc/package", ["doc/package.cfg.sample"])                            
    ],                                                                          

    entry_points={                                                              
        'console_scripts': [                                                    
        ['package-setup = package.utils.setup:main'],                                                      
        ],                                                                      
    },                                                                          
)                                                                               

try:                                                                            
    from twisted.plugin import IPlugin, getPlugins                              
except ImportError:                                                             
    pass                                                                        
else:                                                                           
    list(getPlugins(IPlugin))

tree -d

.
├── doc
│   └── sql
├── src
│   ├── virtual
│   │   ├── cmd
│   │   │   ├── bin
│   │   │   ├── sbin
│   │   │   └── usr
│   │   │       └── bin
│   │   └── files
│   │       ├── etc
│   │       └── proc
│   ├── modules
│   │   ├── commands
│   │   ├── config
│   │   ├── core
│   │   └── dblog
│   └── utils
└── twisted
    └── plugins

1 个答案:

答案 0 :(得分:3)

您必须使用MANIFEST.in文件列出要包含在源代码分发中的数据文件。 package_data仅针对二元分布进行咨询(这是一个很大的缺点)。

请参阅distutils文档中的The MANIFEST.in template