如何使用setuptools和setup.py从软件包中排除单个文件


问题内容

我正在努力blowdrycss。仓库在这里

我希望将设置文件blowdrycss_settings.py从pypi的最终软件包中排除。目的是动态构建自定义设置文件,该文件将放置在用户virtualenv
/ project文件夹中。

在中setup.py,我具有以下内容:

packages=find_packages(exclude=['blowdrycss_settings.py', ]),

我也尝试了exclude_package_data

exclude_package_data={
    '': ['blowdrycss_settings.py'],
    '': ['blowdrycss/blowdrycss_settings.py'],
    'blowdrycss': ['blowdrycss_settings.py'],
},

然后我跑步python setup.py sdist bdist

但是,当我查看构建文件夹时,我仍然看到blowdrycss_settings.py

- build 
    - lib
        - blowdrycss_settings.py

仅排除文件似乎很简单。

如何blowdrycss_settings.py从分布式软件包中排除?


问题答案:

这是我的解决方案。

在的下面blowdrycss,我创建了一个名为的新模块,settings因此目录结构现在如下所示:

blowdrycss
    blowdrycss
        settings
            blowdrycss_settings.py

根据此参考资料setup.py我里面有以下内容:

packages=find_packages(exclude=['*.settings', ]),

要构建发行版:

  1. 删除builddist.egg-info文件夹。
  2. python setup.py sdist bdist

回想起来,我无法做我最初的尝试是一件好事。新结构感觉更清洁,模块化程度更高。