Linux下部署python记录

12 篇文章 0 订阅
7 篇文章 0 订阅

目录

前言

部署过程

安装python

收集依赖

安装依赖

上传代码到服务器

部署

打包部署

直接运行代码

nohub使用

总结

最终结果

更好的方法

遇到的问题


前言

在本地实现了一个python写的webapi,现在要部署到一个外网服务器测试,奈何服务器资源不是我的,而且配置很低。

之前我是搞过直接Linux下docker部署python,但是服务器配置很低可能没法搞docker,只能直接在Linux服务器部署python。

不过实际上,Linux直接部署、Linux下docker部署,差别不大的。

部署过程

安装python

目前比较稳定、兼容性好的版本就是3.10了。

注意如下命令在Linux服务器执行

// 安装python3.10
sudo apt install python3.10
// 查看python版本
python3.10 --version

收集依赖

定位到当前代码路径,cmd执行如下命令,会在当前代码路径下生成requestments.txt文件,里边就是代码依赖项以及对应版本号

注意如下命令在本地开发环境执行执行

pip freeze > requirements.txt

安装依赖

注意如下命令在Linux服务器执行

pip install -r requirements.txt

上传代码到服务器

我目前用的是WinSCP,个人觉得挺好用的

部署

可以有两种方式进行部署。一种是打包好直接服务器运行,再一个是直接拷贝代码到服务器,直接运行代码文件

打包部署

这里需要用到pyinstaller

首先需要安装pyinstaller:pip install pyinstaller

接下来就是通过pyinstaller打包程序,有两种打包方式:

pyinstaller --onefile your_program.py
pyinstaller --onedir your_program.py

如上两种方式的区别:onefile是生成一个文件,onedir是生成一个目录,相关依赖都是这个目录下

注意:在不同操作系统下,生成的文件是不同的,要在Linux服务器运行,那么也需要在Linux环境打包。Linux下生成的是无后缀的可执行文件。

直接运行代码

也就是直接python3 your_program.py

nohub使用

nohub可以在退出终端后继续运行程序。

注意,nohub不能保证系统重启后程序还可以自动运行。

要让系统重启还可以自动运行,可以使用systemd、cron等方式。

总结

最终结果

最终,我还是采用了直接运行代码的方式。

使用打包部署的方式一直没成功,主要问题在于,同一个服务器,直接运行代码没问题,但是打包部署运行,就提示缺包或找不到包的情况。看来,这里面需要学习研究的东西还有不少啊。

找不到包,主要是在代码中,我使用了相对引用(多个py文件存在引用)

更好的方法

更好的方式,还是使用docker部署,本地调试好了,直接将镜像迁移到服务器即可,免去了多次配置环境的问题。而且docker原生的解决了系统重启自动运行的问题。

遇到的问题

Paddle踩坑1:libpython3.10.so.1.0-CSDN博客

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值