python setup.py sdist bdist_wheel 包括所有的.pyc文件 而不包括所有的py文件, manifest,in文件应该如何设置
时间: 2024-10-23 20:17:16 浏览: 26
当你使用`setup.py sdist bdist_wheel`命令打包Python项目时,通常不需要包含`.pyc`文件,因为这些是编译后的版本,可以省略。如果你想控制打包过程,特别是排除`.pyc`文件,你需要创建一个名为`MANIFEST.in`的文件,并配置其中的规则。
`MANIFEST.in`文件使用的是`git add`或`hg addremove`风格的模式语法,用于指示哪些文件应该包含在源码包中。例如,你可以添加一条规则来忽略所有的`.pyc`文件:
```manifest.in
global-exclude = *.pyc, __pycache__, .DS_Store, *.so, *~ # 添加其他你想排除的文件扩展名
```
在这段规则中,`global-exclude`是全局指令,意味着所有地方都应用这条规则,`.pyc`和其他特定文件扩展名都会被排除在外。
如果你只想在打包时不包含某些特定目录下的`.pyc`文件,可以在文件中添加相应的目录路径:
```manifest.in
exclude dir1/*.pyc
exclude dir2/*.pyc
```
这里`dir1`和`dir2`是你想排除 `.pyc` 文件的具体目录。
完成上述设置后,运行`python setup.py sdist bdist_wheel`,系统将只包含`*.py`文件和你明确指定要在源码包中包含的其他文件。
相关问题
如何修改manifest.in文件, 使得 python setup.py bdist_wheel 产生的whl文件中不包含.py文件 只包含pyc文件
在Python项目中,`manifest.in`文件是一个控制哪些文件会被包含在wheel(`.whl`)打包中的文本文件。如果你想在生成的wheel中只包含`.pyc`文件而不包含`.py`源文件,你可以通过编写特定规则到`manifest.in`来实现。下面是一种简单的做法:
1. 首先,创建一个`manifest.in`文件(如果还没有的话),通常放在项目的根目录下。这是一个纯文本文件,每行定义一条规则。例如:
```
recursive-include *.pyc
exclude *.py
```
这里,`recursive-include`告诉`bdist_wheel`处理指定模式的所有子目录,`*.pyc`表示包括所有`.pyc`文件。而`exclude`则明确排除了所有`.py`文件。
2. 使用`python setup.py bdist_wheel`命令打包你的项目。这时,生成的`.whl`将只会包含你在`manifest.in`中指定的文件。
注意,这将保留源代码在`.whl`中,以便于开发者查看。然而,从生产环境部署的角度来看,通常会希望将源代码隐藏起来以减小体积。在这种情况下,你可以考虑使用更复杂的策略,比如使用专门的工具(如`auditwheel`)在安装时替换掉.pyc文件,但这超出了`manifest.in`的基本功能范围。
阅读全文