setup.py bdist_egg没有将文件放入egg中

2 投票
1 回答
3221 浏览
提问于 2025-04-18 15:29

我在使用Python打包的时候遇到了一些困惑的问题。

我有一个叫做setup.py的文件,内容是这样的:

import os

try:
    from setuptools import setup
except ImportError:
    from ez_setup import use_setuptools
    use_setuptools()
    from setuptools import setup

config = {
    "name": "mypackage",
    "version": "3.0.15",
    "include_package_data": True,
    "scripts": ["something.py"],
    "entry_points": {},
    "zip_safe": False,
    }

setup(**config)

还有一个叫做MANIFEST.in的文件,内容是:

recursive-include mypackage *.*
recursive-exclude mypackage *.pyc .DS_Store

当我运行python setup.py sdist时,会生成一个tar.gz的压缩文件,里面包含了所有正确的文件。

但是当我运行python setup.py bdist_egg,然后用Stuffit Expander解压这个egg文件时... 我能看到一个scripts/something.py的文件,但却找不到任何mypackage的源文件。

不过在解压后的egg文件中的SOURCES.txt里,mypackage的文件是有列出来的,所以看起来minifest文件是被解析了,只是没有把它们放进egg文件里。

我到底哪里搞错了或者理解错了呢?

1 个回答

3

你需要在 setuptools.setup()package_data 项目 中列出要包含在你的二进制分发包中的文件:

config = {
    "name": "mypackage",
    "version": "3.0.15",
    "include_package_data": True,
    "scripts": ["something.py"],
    "entry_points": {},
    "package_data": {'': ['*.ext1', '*.ext2']},
    "zip_safe": False,
    }

撰写回答