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

时间:2016-04-19 14:14:02

标签: python python-3.x python-wheel

从python wheel分发包中排除文件的正确方法是什么?

编辑MANIFEST.in没有任何效果,我找不到有关此详细信息的信息。

3 个答案:

答案 0 :(得分:2)

您为什么要这么做?当在目标计算机上首次运行项目时,无论如何都会生成__pycache__目录。 它只是Python的一种优化的字节码表示形式。

但是无论如何,您可以编写一个脚本来解压缩.whl文件并进行修改,然后重新打包。

答案 1 :(得分:0)

我从未遇到过这个问题。

以下是我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__可能适合你。

答案 2 :(得分:-1)

通过setuptools中的

find_packages可以做到这一点,此外,您还可以指定要排除的目录,例如:

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

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