问题:
今天遇到 打包时,whl 没有将有关的文件 打包进 whl 中。
解决问题:
- 新建的文件夹中没有 "__init __.py " 文件
- MANIFEST.in 文件中添加需要拷贝的操作
具体详细解释:
__init __.py 作用
- 标识该目录是一个python的模块包(module package)
如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module package 。 - 简化模块导入操作
如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module package 。
example:
from mypackage.subpackage_1 import test11
from mypackage.subpackage_1 import test12
- 配置模块的初始化操作
在了解了 init.py 的工作原理后,应该能理解该文件就是一个正常的python代码文件。因此可以将初始化代码放入该文件中。
MANIFEST.in 作用
MANIFEST.in允许您控制包中包含的文件。
默认情况下,当您实际打包python代码(使用,比方说python setup.py sdist)创建用于分发的压缩存档时,打包程序将仅在包存档中包含一组特定文件(例如,python代码本身)。如果您的存储库中包含文本文件(例如,模板)或图形(用于您的文档),该怎么办?默认情况下,打包程序不会在归档中包含这些文件,并且它将不完整。
MANIFEST.in 允许您覆盖默认值,准确指定zip存档中包含的文件以供分发。
以 VTK PythonPackage 为例:
VTKPythonPackage
example:
include CMakeLists.txt
include cmake/*.cmake
include README.md
include vtkVersion.py
include scripts/dockcross-manylinux-build-wheels.sh
recursive-include scripts/internal *
include setup.py
include vtk/__init__.py
在打包whl时,包含同目录的一些文件,如cmakelist.txt, cmake/*.cmake README.md vtkVersion.py
scripts/dockcross-manylinux-build-wheels.sh vtk/init.py setup.py 以及 迭代的包含 scripts/internal 中的文件。