将python代码打包成pip包(可以pip install)
2021/4/15 20:26:58
本文主要是介绍将python代码打包成pip包(可以pip install),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- python代码包的用途
- 编写setup.py
- 生成whl和tar.gz文件包
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目录,打包好的文件就在里面。
这篇关于将python代码打包成pip包(可以pip install)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-18Python编程基础
- 2024-10-18Python开发基础:变量与类型
- 2024-10-16Python基础教程:从变量与类型开始
- 2024-10-16Python编程基础与进阶
- 2024-10-16Python编程基础教程
- 2024-10-16Python基础入门指南
- 2024-10-11Python编程基础与实践
- 2024-10-11Python编程基础
- 2024-10-11Python编程基础教程
- 2024-10-11使用Python和FMP API来分析一下绩优股的股息走势。