包管理¶
在不同层级可以使用不同的包管理工具,例如:
- Scoop:管“工具安装”(Python、Git、Node、Pandoc…)——偏系统层面
- venv:管“某个项目的 Python 依赖”——偏项目层面
- conda:更像“连底层二进制库也一起管”的大环境(数据科学常用)
Python 包管理¶
pip¶
pip 本身是一个 Python 包,同时它又可以安装和管理 Python 包。它由Python编写,受限于 Python 解释器的速度。
uv¶
uv 是一个由 Astral(Ruff 的开发团队)用 Rust 编写的 Python 包管理和项目管理工具。它的特点是快到离谱的速度。它是一个编译好的二进制可执行文件(Binary),不依赖 Python。它把散乱的 Python 工具链(pip, poetry, pyenv, venv)统一成一个极速的工具。
- 它可以替代
pip(安装包)。 - 它可以替代
pip-tools(锁定依赖)。 - 它可以替代
virtualenv/venv(创建虚拟环境)。 - 它可以替代
pyenv(管理 Python 版本)。 - 它可以替代
Poetry/PDM(项目全流程管理)。
可以使用scoop install uv安装uv。
JavaScript/TypeScript 包管理¶
Bun¶
Bun 是一个为现代 JavaScript 开发设计的一体化运行时(Runtime)和工具箱,是用 Zig 语言编写的,以性能著称。它让你不再需要为了一个简单的 JS 项目配置复杂的 webpack/babel/jest 全家桶。
- 运行时 (Runtime): 它可以替代
Node.js。你可以直接用bun run index.js运行代码。 - 包管理器 (Package Manager): 它可以替代
npm/yarn/pnpm。bun install速度极快。 - 打包工具 (Bundler): 它可以替代
Webpack/Vite/Rollup。 -
测试运行器 (Test Runner): 它可以替代
Jest/Vitest。 -
主要特点:
- 内置 TypeScript 支持: 你不需要安装
ts-node或配置构建步骤,直接运行.ts文件,Bun 原生支持。 - 启动速度极快: 相比 Node.js,它的启动时间几乎可以忽略不计,非常适合 Serverless 环境。
- 兼容 Node.js API: 它尽力兼容 Node.js 的模块(fs, path, http 等),大多数现有的 npm 包都能直接用。
- 内置 TypeScript 支持: 你不需要安装
Node 版本管理¶
npm¶
npm 是 Node.js 自带的包管理器,主要用于安装和管理 JavaScript 包。它也可以用来管理 Node.js 版本,但功能较为有限。
可以通过以下命令查看 npm 的全局安装目录:
查看全局可执行文件的安装路径:
验证npm包的安装位置¶
使用 which 查找可执行文件,例如:
查看软链接指向的实际文件,例如:
直接查找 pm2 包目录:
或
nvm¶
nvm(Node Version Manager) 是一个用于管理多个 Node.js 版本的工具。它允许在同一台机器上安装和切换不同版本的 Node.js,非常适合需要在不同项目中使用不同 Node.js 版本的开发者。
检查是否使用 nvm:
如果输出是 /home/用户名/.nvm/versions/node/.../bin/node,说明使用了 nvm。