线上的Python服务如何部署?
前一阵子开发了一个Python的项目,但我是第一次接触Python的项目,也不知道线上如何部署,只能按照自己的想法瞎搞一通,好在线上可以正常的运行了。
线上环境
甲方现场属于内网的环境,服务器上不能连接外网,python在运行的时候,还需要python环境的支持,所以要想个办法在线上部署python的环境;
python环境好部署,关键还要把项目的依赖包部署到现场。
解决方案
之前做过一个基于Electron框架的C端运行Python的小程序,实现的方式就是将conda下载的环境全部打到安装包中,然后使用python-shell调用Python的代码,所以部署我也基于这个思路来做。
尝试一
项目在打包的时候,将源码和conda的环境信息一股脑的全都打成压缩文件,然后上传到服务器上。
在服务器上解压之后,就想着直接使用虚拟环境中的python文件直接运行,python命令可以使用,但是缺少各种依赖的包。
尝试二
出了问题之后,就开始问AI,AI推荐的思路是:使用 conda-pack 打包整个环境,导出环境,再在线上进行导入。
- 安装 conda-pack
conda install -c conda-forge conda-pack
- 打包环境
conda pack -n your_env_name -o env_name.tar.gz
- 在目标机器上解压并使用
mkdir -p ~/myenv tar -xzf env_name.tar.gz -C ~/myenv source ~/myenv/bin/activate
- 线上直接使用
source myenv/bin/activate
即可切换到相应的python中,直接运行服务就好
纯 Python小白,有好的方式希望,希望各位大佬带一带