如何在Python Wheel分发包中正确地排除文件?
编辑 MANIFEST.in
文件无效,我找不到关于这个细节的信息。
如何在Python Wheel分发包中正确地排除文件?
编辑 MANIFEST.in
文件无效,我找不到关于这个细节的信息。
我猜你是在问如何在使用 bdist/sdist 打包成 wheel 文件时排除 __pycache__
目录和 *.pyc
文件。如果是这样,以下清单命令对我有效。
global-exclude */__pycache__/*
global-exclude *.pyc
find_packages
函数来自 setuptools,它可以实现这个功能。此外,你还可以指定要排除的目录,例如:
packages=find_packages(exclude=['docs', 'tests']),
但是编译后的文件(pyc 文件和 __pycache__
目录)应该自动排除。
find_packages(exclude=[])
只在包级别过滤。 - Pablo Arias我从未遇到过这个问题。
以下是我的setup.py
的摘录:
name='aenum',
version='2.0.2',
url='https://bitbucket.org/stoneleaf/aenum',
packages=['aenum'],
package_data={
'aenum' : [
'LICENSE',
'README',
'doc/aenum.rst',
'doc/aenum.pdf',
]
},
include_package_data=True,
license='BSD License',
description="Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants",
long_description=long_desc,
provides=['aenum'],
author='Ethan Furman',
author_email='...',
classifiers=[
...
],
还有我的 MANIFEST.in
文件:
exclude aenum/*
include setup.py
include README
include aenum/__init__.py
include aenum/test.py
include aenum/test_v3.py
include aenum/LICENSE
include aenum/CHANGES
include aenum/README
include aenum/doc/aenum.pdf
include aenum/doc/aenum.rst
我会说 exclude aenum/*
对我来说是起作用的,所以可能一个 exclude <package_name>/__pycache__
对你也会有用。
为什么你要这样做?当项目第一次在目标机器上运行时,__pycache__目录将自动生成。它只是Python的优化字节码表示。
但无论如何,您可以编写一个脚本来解压.wheel文件并进行修改,然后重新打包wheel文件。