Python之批量离线安装第三方库


前言

在一些服务器上,在搭建完Python环境之后,因为客服现场的服务器的网络限制原因,不能直接通过pip命令网络下载安装Python的依赖包。
需要在可以正常上网的服务器上下载好所需的依赖包文件,然后复制拷贝在离线的目标环境下

一、准备requirements.txt文件

将自己需要待迁移的第三方库进行记录,用pip中命令将Python依赖包生成列表到requirements.txt文件中,使用命令:

pip freeze >requirements.txt

二、下载第三方库

在正常能上网的服务器中下载需要准备离线安装的python库包,
需要输入以下两个命令:

pip download -r requirements.txt -d packages/ -i https://pypi.tuna.tsinghua.edu.cn/simple

pip wheel -r requirements.txt -w packages/ -i https://pypi.tuna.tsinghua.edu.cn/simple

  • 1、packages/是要生成的文件夹,存放下载的依赖包文件
  • 2、https://pypi.tuna.tsinghua.edu.cn/simple是镜像源地址,加速 download 和 wheel的下载,防止因为网络异常而导致中断
  • 3、为什么连续使用两个下载命令? 理论上仅使用download或者wheel就可以将第三方库下载完毕,但是实际情况,若单独仅使用download命令,可能不对第三方库中的依赖库进行下载。例如 Flask-PyMongo 这个包,只会下载该包,而不会下载 pymongo,那么在离线安装时候会报错。两者同时使用,下载到同一个文件夹中,后续在离线安装时,才能将requirements文件的库完整的下载。

三、在目标服务器上离线部署

不要将 windows 下载包,然后放到 Linux 上进行安装,会安装失效

将生成的packages文件夹requirements.txt文件同时拷入到目标服务器中, 输入以下命令

pip install --no-index --find-links=./packages -r ./requirements.txt

这样就批量下载部署完毕

四、脚手架项目依赖项的离线安装

举例说明:在离线环境搭一套dagster脚手架

在有网络环境下需要输入的命令:

# 下载dagster包
pip install dagster

# 生成dagster脚手架
# dagster project scaffold --name my-dagster-project

# 下载dagster脚手架项目的依赖包
pip install -e ".[dev]"

# 启动dagster
dagster dev

按照上文方法,以可将dagster库离线部署,并可以执行dagster project scaffold --name my-dagster-project命令

但是pip install -e ".[dev]",安装同样需要必须离线安装,这里一般项目的依赖包都在setup.py

setup.py文件

from setuptools import find_packages, setup

setup(
    name="my_dagster_project",
    packages=find_packages(exclude=["my_dagster_project_tests"]),
    install_requires=[
        "dagster",
        "dagster-cloud"
    ],
    extras_require={"dev": ["dagster-webserver", "pytest"]},
)

从上面的setup.py文件中可以看到,需要dagsterdagster-clouddagster-webserver"pytest"。所以理论上提前下载安装这四个库,pip install -e ".[dev]问题也就解决了。
所以在在有网环境下的时候,将pip install -e ".[dev]运行,下载需要安装的库,并用pip freeze >requirements.txt 记录,同时再用pip download pip wheel命令将需要库下载指定文件夹dev_packages文件夹(文件名可以自定义),再将dev_packages文件夹 拷入到目标服务器中,执行以下命令,指定安装的路径

pip install -e ".[dev]" --no-index --find-links=xxx\dev_packages
  • 1、find-links=xxx\dev_packages,这里的路径改成你实际需要的路径;

  • 2、如果还提示dev_packagesw文件夹中缺少相关的包,以可根据提示,去Pypi 官网(https://pypi.org/project/uWSGI/)下载并复制到dev_packagesw文件夹中。

最后启动dagster dev,运行程序。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值