本文介绍: 例如这里需要打包的就是webconsole文件夹这里webconsole文件夹指的是业务代码文件夹也就是我下图圈出来的文件夹,而不是最外层那个webconsole项目目录文件夹,因为我这里起了相同的文件夹名称,怕各位混淆所以解释一下)。这里解释一下把静态资源打包进去的问题. 首先明确一下,我需要打包的是我的业务代码文件夹webconsole下的所有东西, 以及最外层的项目文件夹webconsole下的templatesstatic目录下的所有东西。packages包含模块或包的列表

所需文件目录规范

注意setup.py文件和MANIFEST.in文件需要放在和你需要打包的目录同一级下例如这里需要打包的就是webconsole文件夹(这里webconsole文件夹指的是业务代码文件夹也就是我下图圈出来的文件夹,而不是最外层那个webconsole项目目录文件夹,因为我这里起了相同的文件夹名称,怕各位混淆所以解释一下)。静态文件最好也放在同一级目录下,当然放在webconsole这种业务文件夹内部也是可以的,这个具体看需求情况。
在这里插入图片描述
上面那张图大家就先大概明确一下具体是干什么的, 我后面调整了目录结构,static文件夹和templates文件夹都放到了业务代码webconsole文件夹下, 这里解释为什么, 如果像我上图一样的话,最后打包完, pip install 自己的包, 那么static| templates| webconsole 这三个文件夹就会分散在各处,而不是都在一个webconsole包下.

我后面的内容都会以下图的目录结构讲解
在这里插入图片描述

示例演示

这里指定需要把这两个文件夹下的文件打包进去, 其中websocket/static/** 指的是业务文件夹websocket下的static文件夹下所有的文件包括子文件夹递归所有文件,
websocket/templates/* 指的是业务文件夹websocket下的, 不递归子文件夹
在这里插入图片描述

其中MANIFEST.in文件的语法下图所示,具体内容参考官方文档
在这里插入图片描述
下面的的setup文件没什么好说的,网上有很多解释,稍微贴一点用到

setup() 函数中的部分参数含义如下

name:包的名称
version:包的版本号
description:包的简要描述
packages包含模块或包的列表
install_requires:该包所依赖的其他包。
classifiers:该包适用的 Python 版本支持操作系统、遵循的协议信息

在这里插入图片描述

打包命令需要在项目文件夹下,以我的项目为例也就是项目文件webconsole目录下,执行命令

python setup.py sdist bdist_wheel

在这里插入图片描述

完成后会在项目文件夹下生成一个dist文件夹,里面包含两个文件,如图所示
在这里插入图片描述

如果改动了上面打包的两个文件,setup.py文件和MANIFEST.in,那么一定一定一定要先删除下图的这个文件夹,不然打包还是用的上一次配置,这点很坑!!!
在这里插入图片描述

打包静态文件补充说明

这里解释一下把静态资源打包进去的问题. 首先明确一下,我需要打包的是我的业务代码文件夹webconsole下的所有东西, 以及最外层的项目文件夹webconsole下的templatesstatic目录下的所有东西

这里有两个点需要注意下, 第一个是你想打包静态文件首先要能扫描到你的文件夹, 这里setup.py中的packages我写的是find_packages(), 而把webconsole注释掉了, 是因为我想要扫描项目文件夹webconsole下的所有文件夹及内容, 这样保险一点.
如果只想要webconsole业务文件下的文件,其余的不需要, 那就写webconsole就行了

然后我需要将静态文件打包进去,有两种方式:

第一种是在setup.pypackage_data指定

注意这里的 static/** 指的是static文件夹下所有递归的文件都会被放进去, 而templates/* 这个只有一个 * 星号指的是就只放templates下的文件,不递归内部的文件夹 当然这里的 static 文件夹和 templates文件夹都是指的前面一步 setup.py文件中 packages 这一属性扫描到的包下内容文件
在这里插入图片描述

第二种方式就是在MANIFEST.in文件中指定, 此时setup.py中的package_data属性可以注释掉了,只需要在MANIFEST.in文件中写include规则,如下图,(推荐,虽然可以把静态文件打包到包里,但是pip install的时候,包里面的一部分静态文件install进去了,一部分没有install进去,不知道为啥,有兴趣的可以自行研究

在这里插入图片描述

引用自己打的包

在其他项目中如果想引用自己打的包,那么直接pip install tar包文件路径,就可以把自己的包引入进项目里了。

pip install /path/to/your/package/dist/mypackage-0.1.0.tar.gz

如果pip install报错No module named ‘setuptools.command.build’,那么可能是setup版本过高或过低,我这边是过高了,所以卸载了原来的版本(67.6.0)重新装了个低版本(65.6.3)。

原文地址:https://blog.csdn.net/weixin_44388689/article/details/130391170

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_22928.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注