首页 > 百科知识 正文

requirements.txt文件声明依赖(requirements安装)

时间:2023-11-20 20:02:44 阅读:513 作者:几近盲


requirements.txt文件声明依赖(requirements安装)-第1张


参考: https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format

requirements.txt 文件用于声明 Python 依赖,平常所见的格式非常简单:

nose

nose-cov

beautifulsoup4

如果是通过 pip freeze 生成,还会指定版本,如

mccabe==0.4.0

netaddr==0.7.19

networkx==2.2

pathlib2==2.3.2

pbr==5.2.0

pep8==1.7.1

pip 会从 PyPI 、配置文件中声明的 index-url 或通过命令行传入的 --index 等 index 站点安装这些包,但根据 pip 文档描述,pip 工具可从以以下四种方式安装依赖:

  1. PyPI 或其他 index 站点
  2. VCS(版本控制系统,如 git svn)项目 url
  3. 本地项目文件夹
  4. 本地或远程归档文件

下面来分别说明四种使用方式

PyPI

这种方式最为简单,不做赘述,仅给出常用例子

# 指定一个版本

project == 1.3

# 指定版本区间

project >=1.2,<2.0

# 不使用某个版本

project~=1.4.2

# 6.0 以后的特性,可以指定环境

# Python 版本小于 2.7 时安装 5.4 版本

project == 5.4; python_version < '2.7'

# 仅在 Windows 环境下安装

project; sys_platform == 'win32'

完整描述请参考 https://www.python.org/dev/peps/pep-0440/#version-specifiers

VCS

pip 支持 Git, Mercurial, Subversion and Bazaar,因为 Git 最常用,所以这里只描述 pip Git.

首先需要在运行 pip 命令的机器上安装 git。其次有两种安装方式 https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs 和 non-editable

如果使用 --editable 或 -e 以editable 模式安装,从远端拉取的文件位于 /src/project (全局安装) 或 /src/project (虚拟环境安装),可以通过 --src 选项来覆盖默认值

如果以 non-editable 模式安装,文件会被保存在临时文件中并照常安装,但如果环境中已有满足依赖的包,拉取下来的包将不会覆盖原有的包,除非使用 --upgrade

如果使用 vcs, pip 需要通过 egg= 来指定包名称,如

-e git://git.exmaple.com/project#egg=my_project

如果项目的 setpy.py 文件不在根目录下,如下面的项目结构

pkg_dir/

setup.py # setup.py for package pkg

some_module.py

other_dir/

some_file

some_other_file

还需要指定 subdirectory

-e git://repo_url/#egg=pkg&subdirectory=pkg_dir

除了 git 协议,pip 还支持以下传输协议

git git http git https git ssh git git git file

[-e] git://git.example.com/project#egg=project

[-e] git http://git.example.com/project#egg=project

[-e] git https://git.example.com/project#egg=project

[-e] git ssh://git.example.com/project#egg=project

[-e] git git://git.example.com/project#egg=project

[-e] git file:///home/user/projects/project#egg=project

-e git git@git.example.com:project#egg=project

另外也可以指定分支、tag 和 commit hash

[-e] git://git.example.com/project.git@master#egg=project

[-e] git://git.example.com/project.git@v1.0#egg=project

[-e] git://git.example.com/project.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=project

如果使用 commit hash 建议使用完整 hash 这样可以减少 git api 调用次数

本地文件或归档文件

这两者都比较简单,看例子即可,归档文件可以是 tar.gz 或者是 wheel 文件

# 本地文件

[-e] <local_project_path>

# 本地 tar.gz

<path_to_tar.gz>

file:///<absolute_path_to_tar.gz>

# 远程 tar.gz

http[s]://<url_to_tar.gz>

wheel 文件用法相同

版权声明:该问答观点仅代表作者本人。如有侵犯您版权权利请告知 cpumjj@hotmail.com,我们将尽快删除相关内容。