下面是详细讲解“python通过pipfreeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境”的完整攻略。
简介
在保密的离线环境中,由于无法联网,我们无法使用 pip 直接安装 Python 包。但是,我们可以通过 pip freeze 命令获取所需包的清单,并将其打包为离线包。这些离线包可以通过下载到另外一台外网机器后,再通过 pip install 命令来进行安装。
本文将详细讲解如何通过 pip freeze 命令获取所需 Python 包的清单,以及如何通过 pip download 命令下载这些 Python 包的离线包,并在离线环境中进行自动安装。
获取Python包清单
我们可以通过使用pip freeze命令获取指定Python环境的已安装包清单:
pip freeze > requirements.txt
这条命令将会输出该Python环境中存在的所有已安装的Python包及其依赖,并保存到requirements.txt文件中。
需要注意:在进行获取包清单的操作时,可以使用虚拟环境,让我们的清单文件更加的简洁明了。
下载Python包离线包
我们可以通过pip下载Python包离线包,首先确保你的python版本高于3.4:
pip download -d vendor -r requirements.txt --no-binary :all:
这条命令将会从清单文件中读取每个包的名称和版本号,然后下载安装包并将其存储在vendor目录中。选项--no-binary :all:是必需的,因为这将下载源代码而不是编译好的二进制文件。
我们也可以为每一个包单独地从 PyPI 下载离线包:
pip download --no-binary :all: flask -d vendor/
这条命令将从 PyPI 下载 Flask 所有版本、所有依赖的源代码并存储在 vendor 目录下。
安装Python包离线包
下载好离线包后,我们可以将它们从另外一台机器复制到目标离线环境中,然后使用 pip install 命令来安装这些包。
pip install --no-index --find-links=file:vender/ -r requirements.txt
这条命令指示 pip 从 vendor 目录中查找包,而不是从 PyPI 上查找。选项 --find-links=file:vender/ 告诉 pip 在 file:vender/ 目录中查找包。注意,文件的路径是相对于当前目录的。同时注意,由于安装的是源代码,需要确保编译环境中已经包含编译这些包所需的工具和库。
示例
示例1:安装 Flask 应用
首先,我们在一台可以联网的机器上创建虚拟环境,安装 Flask 应用,然后使用pip freeze命令获取 Python 包清单并将其保存到 requirements.txt 文件中:
$ python3 -m venv myenv
$ source myenv/bin/activate
(myenv)$ pip install flask
(myenv)$ pip freeze > requirements.txt
然后,我们在同一台机器上打包清单中列出的所有包的离线包:
$ pip download -d vendor -r requirements.txt --no-binary :all:
我们可以看到,下载的包位于 vendor 目录下,我们可以将这些包从这台有网的机器复制到目标离线环境中。
最后,在离线环境中使用 pip install 命令安装这些包:
$ pip install --no-index --find-links=file:vendor/ -r requirements.txt
现在,Flask 应用程序已经在离线环境中安装成功。
示例2:安装 jieba 分词库
同样的,我们可以下载 jieba 分词库的离线包:
$ pip download --no-binary :all: jieba -d vendor/
我们可以看到,下载的包位于 vendor 目录下,我们可以将这些包从这台有网的机器复制到目标离线环境中。
最后,在离线环境中使用 pip install 命令安装这些包:
$ pip install --no-index --find-links=file:vendor/ jieba
现在,jieba 分词库已经在离线环境中安装成功。
总结
通过上述过程得到了所需的 Python 包清单,并将它们打包为离线包。然后,我们通过将离线包从一台有网的机器复制到目标离线环境中,并使用 pip install 命令将这些离线包安装到离线环境中。
这个过程需要在两台机器上分别操作,但是得到的是一个可以在离线环境中使用的 Python 包集合。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境 - Python技术站