首先要装好 pip
将安装过的第三方库记录到requirements.txt
pip freeze > requirements.txt
requirements .txt 如下
前面时库名,后面是版本
恢复的时候只需键入如下命令
sudo pip install -r requirements 加上sudo是因为可能有的时候会因为权限不够出现error
具体requirements.txt可以参见官网信息 http://www.pip-installer.org/en/latest/requirements.html#freezing-requirements
Anaconda 环境中的Python包备份
原生pip备份
freeze命令
pip freeze > ~/mypackages/requirements.txt
requirements.txt
文件长这个样子
alabaster==0.7.11
anaconda-client==1.7.2
anaconda-navigator==1.9.2
anaconda-project==0.8.2
appdirs==1.4.3
asn1crypto==0.24.0
astroid==2.0.4
astropy==3.0.4
atomicwrites==1.2.1
attrs==18.2.0
Automat==0.7.0
autopep8==1.4
Babel==2.6.0
内容包括版本信息,似乎没有找到不输出版本号备份包名的方法,安装时似乎也没有忽略版本号的方法,如果想安装相应包的最新版本,可以在安装完成后再升级一遍。
再次安装时只需
pip install -r requirements.txt
上述命令会在将所有安装文件下载完毕后统一安装,因此一旦某个 package 出错就可能导致其他 package 也无法安装。
可以使用以下命令分别安装每个 package
cat requirements.txt | xargs -n1 pip install
也可以在安装软件时保存 cache 方便以后安装
pip install -r requirements.txt -d your_download_dir
pip install -r requirements.txt --no-index --find-links=file://your_download_dir
类似的 pip list 也可以输出所有包,但和 freeze 还是有一定区别的。
pip freeze 和 pip list 的区别
1.一般来说 pip freeze 会比 pip list 的包少几个,因为pip , wheel , setuptools 等包,是自带的而无法(un)install的,考虑到pip freeze的用途,所以这些包并没有显示。
如果一定要显示所有包,可以加上参数-all,即pip freeze -all
2.格式区别
pip freeze 出的格式可以直接作为 requirements.txt 文件使用,而 pip list 输出格式大致如下
Package Version
---------------------------------- -----------
alabaster 0.7.12
anaconda-client 1.7.2
anaconda-navigator 1.9.2
anaconda-project 0.8.2
appdirs 1.4.3
asn1crypto 0.24.0
astroid 2.0.4
astropy 3.0.4
无法直接作为 requirements.txt 文件使用。
pipdeptree 依赖分析工具
使用 pipdeptree 可以分析当前 Python 环境中所有 package 之间的依赖关系
pip install pipdeptree
pipdeptree # 分析依赖关系
pipdeptree --reverse --packages xxx # 某个 package 为何被安装
conda备份
conda list --export > mypackages/package-list.txt # 导出pkg列表
conda create -n myenv --file package-list.txt # 依列表创建新环境
myenv 为环境名,package-list.txt为之前备份的pkg列表
使用--offline
选项禁用不必要的下载,而是从root或其他环境中复制可复用的包
注:conda 备份文件用于恢复时,对通过 pip 安装的 package 不太友好