从python wheel发行包中排除文件的正确方法是什么?编辑MANIFEST.in没有任何效果,我找不到有关此细节的信息。
MANIFEST.in
4jb9z9bj1#
我从来没遇到过这种问题。下面是我的setup.py的摘录:
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__可能对你有用。
exclude aenum/*
exclude <package_name>/__pycache__
iyfamqjs2#
setuptools中的find_packages可以执行此操作,此外,您还可以指定要排除的目录,例如:
find_packages
packages=find_packages(exclude=['docs', 'tests']),
但是编译后的工件(pyc文件和__pycache__目录)应该被自动排除。
__pycache__
abithluo3#
为什么要这么做呢?当一个项目第一次在目标机器上运行时,__pycache__目录总是会生成的。它只是Python的一个优化的字节码表示。但无论如何,您可以编写一个脚本,解压缩.whl文件并进行修改,然后重新打包wheel。
kxeu7u2r4#
我假设您正在询问如何在使用bdist/sdist打包到wheel文件时排除__pycache__目录和*.pyc。
*.pyc
global-exclude */__pycache__/* global-exclude *.pyc
4条答案
按热度按时间4jb9z9bj1#
我从来没遇到过这种问题。
下面是我的
setup.py
的摘录:和我的
MANIFEST.in
:我想说
exclude aenum/*
对我来说是最好的,所以exclude <package_name>/__pycache__
可能对你有用。iyfamqjs2#
setuptools中的
find_packages
可以执行此操作,此外,您还可以指定要排除的目录,例如:但是编译后的工件(pyc文件和
__pycache__
目录)应该被自动排除。abithluo3#
为什么要这么做呢?当一个项目第一次在目标机器上运行时,__pycache__目录总是会生成的。它只是Python的一个优化的字节码表示。
但无论如何,您可以编写一个脚本,解压缩.whl文件并进行修改,然后重新打包wheel。
kxeu7u2r4#
我假设您正在询问如何在使用bdist/sdist打包到wheel文件时排除
__pycache__
目录和*.pyc
。