1

情况

我创建了我的 setup.py 文件。其中大部分都是开箱即用的,但我在附带一些额外的文件时遇到了一些麻烦。但是我注意到运行时我的 tar.gz 中不包含以下文件

python setup.py sdist
  • 文档文件
  • 虚拟文件
  • 服务脚本

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

问题

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

资源

安装程序.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))

树-d

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

1 回答 1

3

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

请参阅distutils 文档中MANIFEST.in模板

于 2013-08-09T10:22:17.917 回答