如何将python代码打包成pip包(可以pip install)

 更新时间:2023年02月08日 08:33:31   投稿:zx  
这篇文章主要介绍了如何将python代码打包成pip包(可以pip install),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python代码包的用途

当你想打包一个目录时,需要现在目录中放一个_init_.py,该文件叫包初始化文件,文件可以为空,也可以放一些代码。举例:

目录hello
        ——  __init__.py
        ——  代码1.py
        ——  代码2.py
        ......

为什么这样做?

如果你想import任何有_init_.py文件的目录下的任何python代码,python都会先运行_init_.py,再运行代码文件。

添加_init_.py还有一个好处,就是在写python代码的时候不用担心python解释器找不到这个目录,不用担心你import时pycharm给你的包划红线了。

以前写代码是,如果你想导入其他项目的python代码,往往会报错,解决方法有三种:

  1. 将别人的代码打成pip包,用pip安装到自己的项目
  2. 在自己的代码中写sys.path.append(“别人代码的目录的路径”)
  3. 在别人代码目录中创建一个__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目录,打包好的文件就在里面。

到此这篇关于如何将python代码打包成pip包(可以pip install)的文章就介绍到这了,更多相关python代码打包成pip包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python操作sqlite的CRUD实例分析

    python操作sqlite的CRUD实例分析

    这篇文章主要介绍了python操作sqlite的CRUD实现方法,涉及Python操作SQLite数据库CURD相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python文件操作的方法

    Python文件操作的方法

    本文详细讲解了Python文件操作的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Python实现常见限流算法的示例代码

    Python实现常见限流算法的示例代码

    在系统的稳定性设计中,需要考虑到的就是限流,避免高并发环境下一下子把服务整垮了,本文为大家整理了一些Python实现的常见限流算法,希望对大家有所帮助
    2024-03-03
  • python中关于提升工作效率的一些小技巧

    python中关于提升工作效率的一些小技巧

    这篇文章主要介绍了python中关于提升工作效率的一些小技巧,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 详解Python3.6的py文件打包生成exe

    详解Python3.6的py文件打包生成exe

    这篇文章给大家分享了Python3.6的py文件打包生成exe的方法步骤以及相关知识点,有需要的朋友可以参考学习下。
    2018-07-07
  • python实现数通设备端口监控示例

    python实现数通设备端口监控示例

    这篇文章主要介绍了python实现数通设备端口监控示例,需要的朋友可以参考下
    2014-04-04
  • python写入并获取剪切板内容的实例

    python写入并获取剪切板内容的实例

    今天小编就为大家分享一篇python写入并获取剪切板内容的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python 确定多项式拟合/回归的阶数实例

    Python 确定多项式拟合/回归的阶数实例

    今天小编就为大家分享一篇Python 确定多项式拟合/回归的阶数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • OpenCV实现从灰度图像切出Mask前景区域

    OpenCV实现从灰度图像切出Mask前景区域

    本文主要介绍了如何利用OpenCV实现从灰度图像,根据阈值,切出多个前景区域,过滤面积太小的图像。文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • python实现字符串和日期相互转换的方法

    python实现字符串和日期相互转换的方法

    这篇文章主要介绍了python实现字符串和日期相互转换的方法,涉及Python中time和datetime函数使用技巧,需要的朋友可以参考下
    2015-05-05

最新评论