如何从python wheels中排除 *.pyc和__pycache__?

ubbxdtey  于 2023-03-09  发布在  Python
关注(0)|答案(4)|浏览(216)

从python wheel发行包中排除文件的正确方法是什么?
编辑MANIFEST.in没有任何效果,我找不到有关此细节的信息。

4jb9z9bj

4jb9z9bj1#

我从来没遇到过这种问题。
下面是我的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__可能对你有用。

iyfamqjs

iyfamqjs2#

setuptools中的find_packages可以执行此操作,此外,您还可以指定要排除的目录,例如:

packages=find_packages(exclude=['docs', 'tests']),

但是编译后的工件(pyc文件和__pycache__目录)应该被自动排除。

abithluo

abithluo3#

为什么要这么做呢?当一个项目第一次在目标机器上运行时,__pycache__目录总是会生成的。它只是Python的一个优化的字节码表示。
但无论如何,您可以编写一个脚本,解压缩.whl文件并进行修改,然后重新打包wheel。

kxeu7u2r

kxeu7u2r4#

我假设您正在询问如何在使用bdist/sdist打包到wheel文件时排除__pycache__目录和*.pyc

global-exclude */__pycache__/*
global-exclude *.pyc

相关问题