Python:为什么setuptools不包含我的包数据?

Jon*_*Jon 7 python distutils setuptools

今天我创建了一个setup.py文件,找到了一个工作脚本和两个无法工作的场景.在两个非工作方案package_data中,构建中缺少after.我用它创建了构建python setup.py sdist.

为什么方案2和3不包含我的包数据?

场景1有效:

import os 
from distutils.core import setup

def find_packages(path):
    package_path = os.path.join(os.path.dirname(__file__), path)
    packages = []
    for f in os.walk(package_path):

    directory_name = f[0]

    if directory_name.endswith('egg-info') or directory_name.endswith('path'):
        continue

    directory_name = directory_name.replace(package_path, '').replace('/', '.').strip()

    if not len(directory_name):
        continue

    if directory_name.startswith('.'):
        directory_name = directory_name.replace('.', '', 1)

    packages.append(directory_name)

return packages

setup (
    name = 'mypkg',
    packages = find_packages('src'),
    package_dir = {'mypkg': 'src/mypkg'},
    include_package_data = True,
    package_data = {
        '': ['*.txt'],
        'mypkg': ['data/*.dat'],
    }
)
Run Code Online (Sandbox Code Playgroud)

场景2不起作用:

from setuptools import setup #, find_packages
from setuptools.command import sdist
setup (
    name = 'mypkg',
    packages = ['mypkg'],
    package_dir = {'mypkg': 'src/mypkg'},
    include_package_data = True,
    package_data = {
        '': ['*.txt'],
        'mypkg': ['data/*.dat'],
    }
)
Run Code Online (Sandbox Code Playgroud)

场景3也不起作用:

from setuptools import find_packages
from setuptools.command import sdist
setup (
    name = 'mypkg',
    packages = find_packages('src'),
    package_dir = {'mypkg': 'src/mypkg'},
    include_package_data = True,
    package_data = {
        '': ['*.txt'],
        'mypkg': ['data/*.dat'],
    }
)
Run Code Online (Sandbox Code Playgroud)

tsg*_*tsg 5

就我而言,问题不在 setup.py 中,而是缺少 MANIFEST.in 中,它还需要声明包数据。

  • @marscher,“包数据”在源发行版中不起作用..您需要 MANIFEST.in ..检查 http://stackoverflow.com/a/14159430/1327005 所以 tsg 是正确的 (3认同)