如何将python代码打包成pip包(可以pip install)
作者:zx 发布时间:2021-08-23 21:38:10
python代码包的用途
当你想打包一个目录时,需要现在目录中放一个_init_.py,该文件叫包初始化文件,文件可以为空,也可以放一些代码。举例:
目录hello
—— __init__.py
—— 代码1.py
—— 代码2.py
......
为什么这样做?
如果你想import任何有_init_.py文件的目录下的任何python代码,python都会先运行_init_.py,再运行代码文件。
添加_init_.py还有一个好处,就是在写python代码的时候不用担心python解释器找不到这个目录,不用担心你import时pycharm给你的包划红线了。
以前写代码是,如果你想导入其他项目的python代码,往往会报错,解决方法有三种:
将别人的代码打成pip包,用pip安装到自己的项目
在自己的代码中写sys.path.append(“别人代码的目录的路径”)
在别人代码目录中创建一个__init__py
你也可以在包中添加一些全局变量或者全局类,供包中的其他代码使用,举例:
目录hello
_init_.py
class birds:
legs = 2
wings = 2
head = 1
然后项目中其他任意位置的代码都可以使用init中的包全局变量和类
格式是 from 目录 import 类/变量
from hello import birds
编写setup.py
和_init_.py同级目录中创建一个setup.py,这个就是pip包安装的脚本。
setup.py
from setuptools import setup find_packages
setup(name='birds',
version='0.0.1',
description='birds atttributes and functions',
author='megnet',
author_email='2290906844@qq.com',
requires= ['numpy','matplotlib'], # 定义依赖哪些模块
packages=find_packages(), # 系统自动从当前目录开始找包
# 如果有的包不用打包,则只能指定需要打包的文件
#packages=['代码1','代码2','__init__'] #指定目录中需要打包的py文件,注意不要.py后缀
license="apache 3.0"
)
'''
name : 打包后包的文件名
version : 版本号
author : 作者
author_email : 作者的邮箱
py_modules : 要打包的.py文件
packages: 打包的python文件夹
include_package_data : 项目里会有一些非py文件,比如html和js等,这时候就要靠include_package_data 和 package_data 来指定了。package_data:一般写成{‘your_package_name’: [“files”]}, include_package_data还没完,还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/.ini/(所有以.ini结尾的文件,也可以直接指定文件名)
license : 支持的开源协议
description : 对项目简短的一个形容
ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
ext_package : 定义extension的相对路径
requires : 定义依赖哪些模块
provides : 定义可以为哪些模块提供依赖
data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
生成whl和tar.gz文件包
python setup.py bdist_wheel # 打包为whl文件
python setup.py sdist # 打包为tar.gz文件
在和_init_.py同级目录下有一个dist目录,打包好的文件就在里面。
来源:https://blog.csdn.net/xuezhangjun0121/article/details/128907404


猜你喜欢
- 这篇文章主要介绍了基于Python实现ComicReaper漫画自动爬取脚本过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
- 前言PyEMD是经验模态分解 (EMD)及其变体的Python实现,EMD最流行的扩展之一是集成经验模态分解 (EEMD),它利用了噪声辅助
- 本文实例讲述了Python模块的定义,模块的导入,__name__用法。分享给大家供大家参考,具体如下:相关内容:什么是模块模块的导入同级目
- 前言这篇博文的目的是演示如何使用 OpenCV、Python 和面部标志对齐人脸。给定一组面部标志(输入坐标),我们的目标是将图像扭曲并转换
- 本文实例讲述了python通过wxPython打开一个音频文件并播放的方法。分享给大家供大家参考。具体如下:这段代码片段使用wx.lib.f
- 占位符说明1、%c,格式化字符及其ASCII码2、%s,格式化字符串3、%d,格式化整数4、%u,格式化无符号整数5、%o,格式化无符号八进
- 一、前言一首歌热门了,参与评论的人也很多,那我们有时候想看看评论,也只能看看热门的评论,大部分人都说的什么,咱也不知道呀~那本次咱们就把歌词
- 用来批量切割视频的开头部分,比如去掉一部电视剧的序幕,看着难受不说数量还很多,很菜鸟的一篇,毕竟我也是一个菜鸟,首先要有ffmpeg这个软件
- 本文记录了mysql安装详细教程,分享给大家。一、版本的选择之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mys
- 本文实例讲述了Python3.5编程实现修改IIS WEB.CONFIG的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env
- 函数的必选参数,指的是函数调用的时候必须传入的参数import mathdef cal (n): return n * nvar
- 先上个效果图: Sample6_1.php 中创建Form: //显示上传状态和图片 <div id="showi
- python删除缓存文件的方法:首先输入“find.-name '__pycache__' -type d -exec rm
- mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。
- BSQL Hacker10个SQL注入工具BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自
- 1.在浏览器下载与浏览器相对于的驱动并放到python的安装根目录下驱动的两个下载地址:http://chromedriver.storag
- escape 方法返回一个可在所有计算机上读取的编码 String 对象。function escape(charString : Stri
- csv(Comma-Separated Values)文件是什么?它是一种文件格式,一般也被叫做逗号分隔值文件,可以使用 Excel 软件或
- 本文以实例详解了python的迭代器与生成器,具体如下所示:1. 迭代器概述: 迭代器是访问集合元素的一种方式。迭代器对象从集合的
- 前言由于安装某个项目的执行文件,提示要卸载MySQL以便它自身MySQL安装,然后我禁用了MYSQL服务,再把这个文件夹删除后,发现还是提示