python项目管理

前置知识

项目的直接依赖和间接依赖:直接依赖是在项目中显示使用import等命令导入的包,间接依赖是由于直接依赖的导入而导入的包,当使用pip安装直接依赖时一般会自动安装间接依赖,比如,当你执行 pip install pandas时,pip 会先读取该包的 setup.py/pyproject.toml 等配置文件,找到它声明的所有依赖,然后会自动检查当前环境是否已安装这些依赖,若未安装 / 版本不满足,则下载并安装符合版本约束的间接依赖。

导出python已安装依赖及版本到requirements.txt文件中的命令:pip freeze > requirements.txt

按照requirements.txt中的包名和版本安装包的命令:pip install -r requirements.txt

python的包管理方案

过于早的python包管理方案就不介绍了因为那些方案已经被历史遗弃了,接下来从2008年出来的pip方案开始介绍。

方案一(早期方案):通过pip install进行安装依赖,通过pip uninstall移除依赖,这种方案在安装时没有什么问题,但是再移除时存在问题,因为当移除直接依赖时,它不能移除直接依赖的间接依赖,只会移除直接依赖本身,pip install会安装间接依赖但是pip uninstall却不能实现移除间接依赖这是不合理的,在项目中,删除了直接依赖后如果存在它的部分间接依赖不会被项目的其他的依赖所使用,也就是它的部分间接依赖对项目没有任何作用,那么留着它就是多余的,所以一个好的包管理工具应该能找到并删除这样的间接依赖,而显然pip uninstall是不能实现这个功能的,并且不止于此早期的包管理还存在很多问题。

方案二(现在方案):为解决上述问题,后来python官方推出来了现代项目的配置文件pyproject.toml。

Poetry项目管理工具

介绍:Poetry 是 Python 生态中 一站式项目管理工具 ,核心功能有依赖管理、虚拟环境、打包发布功能,完全遵循 pyproject.toml 现代标准。它底层也是用的pip和venv。

pip install poetry; 安装poetry。

poetry new 项目名称; 创建新项目。

poetry init;在现有项目中添加poetry支持,注意这个命令需要在项目根目录的终端中输入。

poetry add 库名称 【可选参数】;给项目添加依赖即添加python库,这个命令会给当前项目安装库,并将包名和版本约束写入 pyproject.toml文件

poetry remove 库名称;给项目移除依赖。

poetry install;根据pyproject.toml和poetry.lock文件安装依赖

poetry python install python版本;安装python的命令,例如poetry python install 3.9。

poetry python remove python版本;移除环境中的对应python版本。

poetry python list;列出环境中可用的python版本。

poetry env use python版本;用对应的python版本创建一个虚拟环境,比如poetry env use 3.7。创建的虚拟环境的名称默认是项目名称+哈希值+python版本。

poetry env list;列出可用的虚拟环境。

poetry env info;列出当前虚拟环境的信息包括路径,如果将路径添加到vscode中就可以用vscode运行代码了。

poetry run python 文件名;在虚拟环境中运行某个文件。

poetry config --list ;列出poetry的配置项以及配置项的值。

poetry config virtualenvs.in-project true;虚拟环境将在项目根目录中名为.venv的文件夹中创建;如果virtualenvs.in-project未明确设置,poetry默认情况下将在{cache-dir}/virtualenvs下创建虚拟环境,或者如果已存在,则使用{project-dir}/.venv目录;如果设置为falsepoetry将忽略任何现有的.venv目录。

参考下面文档

https://python-poetry.org/docs/https://python-poetry.org/docs/

相关推荐
白猫不黑16 分钟前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
郑州光合科技余经理40 分钟前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
kuuailetianzi1 小时前
Python初识:定位、优势与发展历程
python
知识分享小能手1 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
guoran_shini1 小时前
LLM微调-训练垂类问答模型
python·lora·sft
basketball6161 小时前
Python FastAPI 介绍以及常用方法
python·fastapi·vllm·ai infra
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
论文复现现场1 小时前
企业知识库 RAG 用什么模型便宜?GLM-5.3-Flash 长文本 API 实测
python·rag·企业知识库·大模型api·glm-5.3-flash
梦在远山后2 小时前
从手写 Loop 到可恢复 Runtime:用 LangGraph、PostgreSQL Checkpoint 与 AG-UI 跑通中断恢复
python·langchain·agent
阿里嘎多学长2 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管