包管理器
pip
pip 是 Python 的默认包安装器,默认从 PyPI(Python Package Index)获取包,他们都是 PyPA(Python Packaging Authority)的。
# 安装包(最新版本)
pip install <package>
# 有时候 PATH 里 pip 对应的不是 PATH 里的 python,用 python -m 调用
python -m pip install <package>
# 指定版本
pip install <package> == 1.0.4
pip install <package> >= 1.0.4
pip install <package> ~= 1.0.4 # 兼容
# 用 requirements.txt 安装需求
pip install -r requirements.txt
# 更新包
pip install --upgrade <package>
# 卸载包
pip uninstall <package>
# 列出所有已安装的包
pip list
# 显示所有不是最新的包
pip list --outdated
# 显示不是别的包的依赖的包
pip list --not-required
# 显示某已安装的包的信息
pip show <package>
# 更新 pip 自身
python -m pip install --upgrade pip
Poetry
Poetry 是另一个包管理器。
Poetry 会自动创建 virtualenv,所有的执行都是在这个 virtualenv 里。此外还有类似 NPM 的 lock 机制。
# 安装 Poetry(Unix)
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
# 安装 Poetry(Windows)
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
# 不推荐 pip install Poetry
# 更新 Poetry
poetry self upgrade
# 在已有的项目中启用 Poetry,创建 pyproject.toml
poetry init
# 添加依赖
poetry add <package>
# 在创建的 virtualenv 中运行
poetry run <command>
# 运行 pyproject.toml 中定义的 script
poetry run <script>
# 在创建的 virtualenv 中使用交互式 shell
poetry shell
# 查看配置
poetry config --list
# 列出所有环境
poetry env lish --full-path
陷阱
值得注意的是,poetry env use 只是选择不同的 Python 版本。比方说,poetry env list 的输出可能是:
test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)
这里面的的 hash 值都是 O3eWbxRl,只是 Python 版本不同。估计 hash 值是基于项目路径的,因为同一份代码在不同位置的 hash 值不同,而且同一份代码的 env 不能用于另一个位置的同一份代码。