当前位置: 首页 > news >正文

[git] github管理项目之环境依赖管理

导出依赖到 requirements.txt

pip install pipreqs
pipreqs . --encoding=utf8 --force

但是直接使用pip安装不了torch,需要添加源!!

pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html

python 项目中 setup.py 文件的作用是什么

参考:

  1. https://zhuanlan.zhihu.com/p/276461821

包分发的始祖:distutils

distutils 是 Python 的一个标准库,从命名上很容易看出它是一个分发(distribute)工具(utlis),它是 Python 官方开发的一个分发打包工具,所有后续的打包工具,全部都是基于它进行开发的。distutils 的精髓在于编写 setup.py,它是模块分发与安装的指导文件。

如果一个项目使用 python setup.py install 来安装依赖,那么这个项目的安装方法是通过源码安装。相反,与之对应的是通过二进制软件包的安装。

  • 这里整个项目都是一个包!

分发工具升级:setuptools

setuptools 是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。

distribute,或许你在其他地方也见过它,这里也提一下。

distribute 是 setuptools 有一个分支版本,分支的原因可能是有一部分开发者认为 setuptools 开发太慢了。但现在,distribute 又合并回了 setuptools 中。因此,我们可以认为它们是同一个东西。

因此,setuptools 是一个优秀的,可靠的 Python 包安装与分发工具。

源码包与二进制包什么区别?

Python 包的分发可以分为两种:

1、以源码包的方式发布

源码包安装的过程,是先解压,再编译,最后才安装,所以它是跨平台的,由于每次安装都要进行编译,相对二进包安装方式来说安装速度较慢。

2、以二进制包形式发布

二进制包的安装过程省去了编译的过程,直接进行解压安装,所以安装速度较源码包来说更快。

由于不同平台的编译出来的包无法通用,所以在发布时,需事先编译好多个平台的包。

二进制包的常见格式有:

在这里插入图片描述

eggs 与 wheels 有什么区别?

Egg 格式是由 setuptools 在 2004 年引入,而 Wheel 格式是由 PEP427 在 2012 年定义。Wheel 的出现是为了替代 Egg,它的本质是一个zip包,其现在被认为是 Python 的二进制包的标准格式。

以下是 Wheel 和 Egg 的主要区别:

  • Wheel 有一个官方的 PEP427 来定义,而 Egg 没有 PEP 定义
  • Wheel 是一种分发格式,即打包格式。而 Egg 既是一种分发格式,也是一种运行时安装的格式,并且是可以被直接 import
  • Wheel 文件不会包含 .pyc 文件
  • Wheel 使用和 PEP376 兼容的 .dist-info 目录,而 Egg 使用 .egg-info 目录
  • Wheel 有着更丰富的命名规则。
  • Wheel 是有版本的。每个 Wheel 文件都包含 wheel 规范的版本和打包的实现
  • Wheel 在内部被 sysconfig path type 管理,因此转向其他格式也更容易
  • wheel 包可以通过 pip 来安装,只不过需要先安装 wheel 模块,然后再使用 pip 的命令。

如何编写setup.py文件?


http://www.mrgr.cn/news/44129.html

相关文章:

  • 社会工程学:社工无处不在
  • useradd命令:添加Linux新用户
  • 车载诊断协议DoIP系列 —— DoIP APP 应用层(AL)
  • 【异或和之和 / H】
  • d3底层绘制拓扑图
  • No.5 笔记 | 网络端口协议概览:互联网通信的关键节点
  • CSS基础-盒子模型(三)
  • Chromium 中JavaScript File API接口c++代码实现
  • 怎么将mp4转换为mp3?教你6种值得收藏的视频转音频方法!
  • 走进异常类的世界,自定义业务异常类实现指南
  • 【机器学习】深度学习、强化学习和深度强化学习?
  • 个人网站,怎么操作才能提升个人网站的流量
  • PostgreSQL分区表,实战细节满满
  • 科普篇 --- 什么是汽车中的API?
  • DataX+Crontab实现多任务顺序定时同步
  • Hive数仓操作(七)
  • 鸿蒙开发(NEXT/API 12)【穿戴设备传感器获取】手机侧应用开发
  • Linux命令:用于管理 Linux 系统中用户组的命令行工具gpasswd详解
  • 【数据结构】【链表代码】随机链表的复制
  • C# 雷赛运动控制器 SMC304 新建工程