在学习Python全栈的过程中要接触非常多的库,很多库都是直接pip install
首先举例大名鼎鼎的OpenCV
# 安装OpenCV
pip install opencv-python
# 导包
import cv2
再来一个大名鼎鼎的sklearn
# 安装
pip install scikit-learn
# 导包举例
from sklearn.preprocessing import StandardScaler
如果你想要升级已安装的包到最新版本,可以使用 -U
或 --upgrade
参数。
pip install -U requests
如果你想忽略已经安装的包,并且强制重新安装它,可以使用 --ignore-installed
参数。
pip install --ignore-installed requests
【注】他不是忽略不安装已经装好的,而是我管你装没装过,统统重新装最新的。
使用 --force-reinstall
来确保即使包已经是最新的也会被重新安装。
pip install --force-reinstall requests
使用 -q
或 --quiet
参数,减少输出信息,只显示错误。
pip install -q requests
更详细的输出信息可以使用 -v
或 --verbose
参数。
pip install -v requests
当你从一个包含项目源代码的目录中安装时,使用 -e
可以让安装后的包仍然指向原始源文件的位置。这意味着如果你对源代码进行了修改,这些更改会立即反映在已安装的包中,而不需要重新安装。
# 比如进入llamafactory的项目路径下执行下面这个安装命令
pip install -e .
"-e"
:可编辑模式安装包。
"."
:这里的点表示当前工作目录。也就是说,pip
会在当前目录下寻找 setup.py
或者 pyproject.toml
文件来确定如何安装该项目。这通常用于本地开发环境中的包安装,使得开发者可以直接从源代码运行程序,并且任何代码上的变化都会即时生效。
有时你需要从私人仓库或其他来源安装包。这时可以使用 -i
或 --index-url
参数来指定自定义的URL。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
--index-url 其实就是 -i
这个和使用需求文件来安装有点像。回顾一下,通过 -r
或 --requirement
参数,可以从一个需求文件中读取包列表并安装它们。
但约束文件用于在安装过程中限制包的版本,而不像需求文件那样强制特定版本。这意味着 pip
仍然会尝试找到满足所有依赖关系的最佳版本组合,但不会超过约束文件中定义的版本范围。你可以使用 -c
或 --constraint
参数来指定约束文件。
pip install -c constraints.txt
当你想要禁用 pip 的包下载缓存时,可以使用 --no-cache-dir
参数。这在你希望确保每次都从网络获取最新版本的包,或者在某些环境中磁盘空间有限的情况下特别有用。
pip install --no-cache-dir requests
PEP 517 定义了一种标准方式来构建 Python 包,它引入了构建隔离的概念,即在一个独立的临时环境中进行构建以避免与全局环境冲突。然而,在某些情况下,你可能希望禁用这种隔离,例如当你需要构建过程能够访问当前环境中的已安装包时(如一些特定的开发工具或库)。
举个例子说明:假设你有一个大模型项目依赖于pytorch2.1版本的库,该版本库是你的项目的构建过程中必需的。此时你在安装其他的同样依赖pytorch的包时,可以使用
--no-build-isolation
来让构建过程可以看到全局环境中已经安装的这个库。这样它就不会莫名其妙的把你的2.1版本torch给升级成最新版。
pip install -e . --no-build-isolation
上面这个命名达到的效果是: