一、什么是requirements.txt?
说白了,`requirements.txt` 就是Python项目的「依赖清单」。它本质上就是一个纯文本文件,但它的作用可不小:
* **统一依赖**:彻底告别“我本地能运行,别人运行就报错”的尴尬局面。
* **批量操作**:一条命令搞定所有依赖的安装或卸载,效率翻倍。
* **环境还原**:别人拿到你的项目,执行一条命令就能复刻出和你一模一样的开发环境,省时省力。
**有个小细节**:文件名最好就叫 `requirements.txt`(这是Python生态里的通用约定),并且确保文件后缀是 `.txt`,而不是 `.txt.txt`。不放心的话,可以先把电脑文件的后缀显示功能打开确认一下。
二、实操步骤:创建+编写requirements.txt
下面以PyCharm项目为例(这和我们的上位机开发场景很吻合),介绍两种创建方法。新手朋友建议直接选第一种,非常直观。
方法1:手动创建(最直观,新手首选)
这种方式不需要你记任何终端命令,直接在PyCharm的图形界面里操作就行。
1. 打开你的PyCharm项目,定位到 **项目根目录**(就是放`.py`主文件的那个目录)。
2. 在项目根目录上右键点击,选择 `New` -> `Text File`。
3. 在弹出的文件名输入框中,输入 `requirements.txt`,然后按下Enter键确认。
4. 文件创建成功后,双击打开它,就可以开始编辑你需要的库清单了。
**小提示**:如果你不太确定项目根目录在哪,可以看PyCharm左侧的「Project」面板。一定要确保这个文件和你的核心代码在同一个层级,不然后续执行命令时可能找不到它。
方法2:终端快速创建(老手常用)
如果你习惯使用终端,这个方法会更直接。
1. 打开PyCharm底部的「Terminal」终端(通常默认就在项目根目录,如果不在,可以用 `cd` 命令切换到正确路径)。
2. 根据你的操作系统,输入对应的命令来创建一个空的 `requirements.txt` 文件:
* **Windows系统**:`type nul > requirements.txt`
* **Mac/Linux系统**:`touch requirements.txt`
3. 执行命令后,项目根目录下就会自动生成一个空的 `requirements.txt` 文件,双击打开它即可。
核心:编写requirements.txt内容(语法超简单)
语法规则其实很简单:**每一行写一个库名**。为了安全起见,最好指定版本号,避免因为版本兼容问题而出错。以 `#` 开头的行是注释,不会被执行,可以用来说明每个库的用途,方便日后维护。
**写法1:基础版(只写库名,安装最新稳定版)**
这种方式适合对库版本没有特殊要求、只想快速安装的场景,非常简洁。
```bash
# 注释:Python上位机依赖清单
# 界面开发(PyQt5)
PyQt5
pyqt5-tools
# PLC通信相关(Modbus + S7协议,对接PLCSIM)
pymodbus
python-snap7
# 相机对接 + 视觉处理
opencv-python
# 对接海康工业相机(官方SDK封装)
hikvision-api
# 辅助工具
numpy
# 保存检测数据到Excel(上位机刚需)
openpyxl
# 串口通信(备用,对接串口PLC/传感器)
pyserial
```
**写法2:进阶版(指定版本,推荐项目使用)**
这种写法更严谨,能确保团队成员或不同机器上的环境完全一致。因为Python库版本更新很快,不同版本之间可能存在兼容性冲突。比如PyQt5的高版本和`pyqt5-tools`不匹配,或者`python-snap7`版本过高导致无法连接PLCSIM。
格式就是:`库名==版本号`(`==`两边不要加空格)。
```bash
# Python上位机依赖清单(指定版本,稳定兼容)
# 界面开发(PyQt5稳定版本,避免报错)
PyQt5==5.15.9
pyqt5-tools==5.15.9.3.0.1
# PLC通信(适配PLCSIM Advanced 5.0)
pymodbus==2.5.3 # Modbus TCP通信,稳定无bug
python-snap7==1.4.1 # S7协议,对接西门子PLC/PLCSIM
opencv-python==4.8.1.78 # 稳定版,避免取流卡顿
hikvision-api==0.3.5 # 海康相机SDK封装,适配MVS SDK
# 辅助工具(版本兼容,无冗余)
numpy==1.24.3 # 适配OpenCV 4.8.1
openpyxl==3.1.2 # 操作Excel,支持批量保存数据
pyserial==3.5 # 串口通信,备用
```
**写法3:其他常用补充(了解即可)**
* **指定版本范围**:比如 `numpy>=1.20.0,<1.25.0`,表示安装1.20.0到1.25.0之间的版本。
* **从指定地址安装**:比如 `git+https://github.com/xxx/xxx.git`,适用于安装开发中的第三方开源库。
* **卸载时使用**:语法和安装时一样,后面会讲到。
三、关键步骤:批量安装所有依赖
编写好 `requirements.txt` 文件后,不需要再挨个 `pip install` 了,一条命令就能搞定一切。
1. 打开终端,切换到项目根目录
打开PyCharm的Terminal终端,它通常默认就在项目根目录。如果不在,输入以下命令切换到你自己的项目路径:
```bash
cd D:\PyCharmProjects\PLC_Camera_UpperComputer # 示例路径,替换成你自己的
```
2. 核心安装命令
基础命令(从官方PyPI源安装):
```bash
pip install -r requirements.txt
```
执行后,pip会自动读取 `requirements.txt` 中的所有库,逐个下载并安装。你只需要在终端里看到最终显示 `Successfully installed`,就代表全部安装成功了。
3. 优化命令(国内镜像源,解决安装慢、超时)
有个常见的坑:国内访问Python的官方PyPI源(国外
服务器)经常速度慢、甚至超时。强烈推荐使用 **国内镜像源** 来加速,比如
阿里云镜像源(速度最快,优先选):
```bash
#
阿里云镜像源(推荐,适配国内网络)
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 清华镜像源(备选,稳定)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
镜像源只是加速了下载,你安装的库内容和官方源完全一样,不用担心版本问题。
四、实用拓展命令(必记,提升效率)
除了批量安装,还有三个非常实用的命令,特别适合我们的项目备份和环境清理场景。
1. 导出当前环境的所有库到requirements.txt
如果你已经在环境中手动安装好了所有库,想快速生成一份 `requirements.txt` 清单作为备份或分享给他人,这个命令非常好用:
```bash
pip freeze > requirements.txt
```
执行后,它会自动覆盖(或生成)一个 `requirements.txt`,里面会列出当前环境下所有已安装的Python库及其精确版本。
2. 批量卸载所有依赖(慎用)
当你想彻底清理开发环境、重新配置依赖时,可以用这个命令,它能批量卸载 `requirements.txt` 里列出的所有库:
```bash
pip uninstall -r requirements.txt -y
```
加上 `-y` 参数,会自动确认卸载,省去逐个确认的麻烦。**请一定谨慎使用,避免误删重要环境。**
3. 安装时指定requirements.txt路径
如果 `requirements.txt` 文件不在当前终端目录下(比如放在桌面),你不需要切换路径,直接指定文件的完整路径即可:
```bash
pip install -r D:\Desktop\requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
```
六、方法补充
除了 `requirements.txt`,还有一些其他的主流批量安装和管理依赖的方法,这里也一并整理给你。
1. 标准方法:pip install -r requirements.txt
这是最通用的方式,核心流程和前面讲的一致:
* 在项目环境中执行 `pip freeze > requirements.txt` 生成清单。
* 在新环境中执行 `pip install -r requirements.txt` 一键安装。
* 你同样可以用 `-i` 参数指定国内镜像。
2. 进阶批量安装技巧
* **忽略已安装的包,仅安装缺失的**:`pip install -r requirements.txt --ignore-installed`。通常情况下pip默认会跳过已满足的依赖,这个命令在强制重装时有用。
* **批量升级所有依赖**:`pip install --upgrade -r requirements.txt`。
* **从多个文件安装**:`pip install -r base.txt -r dev.txt`。可以管理不同环境的依赖,比如基础依赖和开发依赖分开。
* **从URL或本地路径安装**:`requirements.txt` 里可以直接写网络链接或本地的 `.whl` / `.tar.gz` 文件路径。
* **使用pip-tools管理精确依赖**:安装 `pip-tools` 后,可以编写一个 `requirements.in` 文件(只写顶层依赖),然后执行 `pip-compile requirements.in` 来自动生成一个锁定版本的 `requirements.txt`,保证环境一致性。
3. 环境管理器中的批量安装
* **Pipenv**:非常流行的现代管理工具,使用 `pipenv install` 安装 `Pipfile` 中的依赖,或用 `pipenv install -r requirements.txt` 导入旧清单。
* **Poetry**:另一个新锐工具,使用 `poetry install` 安装 `pyproject.toml` 中声明的依赖。
* **Conda**:在大数据和科学计算领域很常用。可以用 `conda install --file requirements_custom.txt` 安装自定义文件(格式略有不同),或通过 `conda env export > environment.yml` 和 `conda env create -f environment.yml` 来导出和创建完整环境。
四、离线批量安装
如果你的目标机器完全无法联网,可以先用一台能联网的机器准备好所有离线包:
```bash
pip download -r requirements.txt -d ./offline_packages
```
这个命令会把 `requirements.txt` 中所有库以及它们的依赖都下载到 `offline_packages` 这个文件夹里。
然后,把这个文件夹复制到目标机器上,执行离线安装命令:
```bash
pip install --no-index --find-links ./offline_packages -r requirements.txt
```
`--no-index` 告诉pip不要访问网络源,`--find-links` 指定本地包存放的路径。
本文转载于:https://www.jb51.net/python/362679p39.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。