python基础知识--setuptools打包

一、打包测试

python setup.py test

二、打包

python setup.py bdist_wheel

三、打包非.py文件以外的静态资源--MANIFEST.in

3.1 模板

3.1.1 在setup.py中设置include_package_data=True

from setuptools import setup, find_packages

setup(
    name='your_project_name',
    version='0.1',
    description='A description.',
    packages=find_packages(exclude=['ez_setup', 'tests', 'tests.*']),
    include_package_data=True,
    install_requires=[],
)

3.1.2 在根目录下新建 MANIFEST.in

include MANIFEST.in
include README.md
include *.txt  #包含根目录下的所有txt文件
recursive-include examples *.txt *.py  #包含所有位置的examples文件夹下的txtpy文件
prune examples/sample?/build  #排除所有位置examples/sample?/build

3.1.3 其他书写方式

include pat1 pat2 ...   #include all files matching any of the listed patterns
exclude pat1 pat2 ...   #exclude all files matching any of the listed patterns
recursive-include dir pat1 pat2 ...  #include all files under dir matching any of the listed patterns
recursive-exclude dir pat1 pat2 ... #exclude all files under dir matching any of the listed patterns
global-include pat1 pat2 ...    #include all files anywhere in the source tree matching  & any of the listed patterns
global-exclude pat1 pat2 ...    #exclude all files anywhere in the source tree matching  & any of the listed patterns
prune dir   #exclude all files under dir
graft dir   #include all files under dir

四、问题

4.1 问题1

使用python setup.py install安装完成之后, 调用包接口, 显示No module named XXX, setup.py文件中的nameXXX是一致的, 而且也添加了__init__.py文件

原因

刚开始怀疑目录下面缺少__init__.py文件, 但实际上在查看生成的build文件时发现, 原来将setup.py放在了安装包文件目录的内部, 打包完成之后发现./build/lib/目录下并不是以XXX为主目录的包结构, 而是以XXX命名的目录下的文件, 由此可以看出setup.py文件放错了位置, 而是应该放在以XXX为主目录的包结构的外面, 这样, 打包之后才能将以XXX命名的文件全部打包进去.

正确打包的build结果如下:

build