我正在研究blowdrycss
。存储库是这里。
我希望将blowdrycss_settings.py
的设置文件排除在pypi上的最终包之外。其目的是动态构建一个自定义设置文件,该文件将放置在用户虚拟/项目文件夹中。
在setup.py
中,我有以下内容:
packages=find_packages(exclude=['blowdrycss_settings.py', ]),
我也试过数据
exclude_package_data={
'': ['blowdrycss_settings.py'],
'': ['blowdrycss/blowdrycss_settings.py'],
'blowdrycss': ['blowdrycss_settings.py'],
},
然后运行python setup.py sdist bdist
。
但是,当我查看build文件夹时,仍然会看到blowdrycss_settings.py
- build
- lib
- blowdrycss_settings.py
似乎只排除一个文件应该是很简单的。
如何将blowdrycss_settings.py
排除在分布式包之外?
发布于 2016-02-01 01:06:49
这是我的解决办法。
在blowdrycss
下面,我创建了一个名为settings
的新模块,因此目录结构现在如下所示:
blowdrycss
blowdrycss
settings
blowdrycss_settings.py
基于这个参考文献,在setup.py
内部有以下内容:
packages=find_packages(exclude=['*.settings', ]),
要构建发行版:
build
、dist
和.egg-info
文件夹。python setup.py sdist bdist
回想起来,我无法做我最初试图做的事情,这是很好的。新的结构感觉更干净,更模块化。
发布于 2019-05-08 15:25:18
想象一下你有一个项目
root
├── setup.py
└── spam
├── __init__.py
├── bacon.py
└── eggs.py
您希望将spam/eggs.py
排除在打包之外:
import fnmatch
from setuptools import find_packages, setup
from setuptools.command.build_py import build_py as build_py_orig
excluded = ['spam/eggs.py']
class build_py(build_py_orig):
def find_package_modules(self, package, package_dir):
modules = super().find_package_modules(package, package_dir)
return [
(pkg, mod, file)
for (pkg, mod, file) in modules
if not any(fnmatch.fnmatchcase(file, pat=pattern) for pattern in excluded)
]
setup(
packages=find_packages(),
cmdclass={'build_py': build_py}
)
excluded
列表中的全局和多个条目也会工作,因为它是由fnmatch
使用的,所以您可以声明。
excluded = [
'modules_in_directory/*.py',
'modules_in_subtree/**/*.py',
'path/to/other/module.py'
]
等。
这个食谱是基于我的另一个答案的问题setup.py从bdist中排除了一些python文件。。不同之处在于,这个配方排除了基于文件全局的模块,而另一个则排除了基于质量的模块,例如
excluded = ['spam.*', '*.settings']
将排除spam
包的所有子模块以及每个包和子包中名为settings
的所有模块。
发布于 2021-06-19 02:59:21
从带有setuptools
的包中删除单个或至少几个特定文件的最简单方法就是使用MANIFEST.in
。例如,在包中,只需指定foo.py
,就可以排除所有文件名为global-exclude foo.py
。如果您只使用setuptools
方法,则不需要进行MANIFEST.in
黑客攻击或更改包的结构。
有关可以使用的更多命令,请参见专用MANIFEST.in
。
https://stackoverflow.com/questions/35115892
复制相似问题