python离线安装第三方库的方式

       本文离线安装的语境为:现在给无法连接互联网的机器B安装python的第三方库,机器A可以联网,现先通过A下载需要的文件,然后拷贝到B,再在B上进行离线安装。

       上述语境的问题在于,通过A下载的文件拷贝到B后,需要满足B可以完全的离线安装,所以许多库通过下载.whl文件安装的方式便行不通,因为通过.whl文件安装依然很可能需要安装额外的依赖项,而依赖项的安装需要联网才能进行。

本文讲解以下三种方式。

方式一

       最简单的,现在A机器上通过pip命令安装好,然后进入python存放第三方库的site-packages目录寻找安装好的库,可以通过时间排序选择最新添加的文件,然后拷贝这些文件到B的site-packages目录下即可。

       这种方式的缺点是,需要A有和B一样的python环境,甚至是系统配置(如果安装的库对系统有要求的话),而且如果库需要和系统交互,那么直接的拷贝最终的安装文件并不一定work。此外,该方式还会破坏A的原有python环境,但是如果你不介意这点的话,该方式还是可以尝试的,较多情况下对于多数库还是可以行得通的。

方式二

       通过创建python的虚拟环境,在虚拟环境中安装第三方库,然后将整个虚拟环境中的site-packages拷贝到B上。具体如何创建虚拟环境,可以参考博主的这篇文章

       这种方式相对于方式一,优点是可以不破坏原有的python环境,而是通过独立的虚拟环境实现,而且因为虚拟环境是很干净的,不用担心一些冗余无效甚至可能带来破环冲突的文件拷贝到B上,所以可以提供成功率。但这种方式的缺点和方式一一样,由于需要预先在A上安装,因此对于系统配置或者python环境有要求的库就无能为力了。

方式三

       通过python的pip工具实现。具体地,先通过pip工具将安装需要的库下载到本地,注意这里只是下载安装需要的文件,而不进行安装,比如库本身以及依赖项的.whl文件,然后将这些用来安装的文件放在一个文件夹下拷贝到B,最后在B上通过pip工具进行安装即可。

       具体地,比如要安装的库名为test,版本为1.3.5,那么可以通过下列命令实现:

python -m pip download test==1.3.5

运行完之后,会在当前工作目录下多出安装该库需要的所有文件,所以最好先新建一个文件夹,比如test,将工作目录转到该文件夹下运行该命令。

然后将该文件夹test拷贝到B上,再运行下列命令进行安装:

python -m pip install --no-index --find-links=./test/ test

上面命令的意思是通过非联网方式,指定本地的archive路径,进行库的安装。--no-index表示不通过Pypi进行安装,--find-links后面跟本地的路径,这个路径下存放的就是安装文件,最后再指明需要安装的库名test即可。

       这种方式是博主最为推荐的,也是最有效的方式。因为该方式不需要在A上先安装,而是直接在B上进行安装,所以就不存在方式一和方式二的缺点,可以顺利的进行离线安装。

猜你喜欢

转载自blog.csdn.net/S_o_l_o_n/article/details/110492806
今日推荐