生产环境部署python项目小记

文章目录

  • python项目部署
    • 描述
    • 经过
      • 问题一
      • 问题二
    • 复盘
    • 如何避免

python项目部署

描述

作为python的小学生,在部署的时候总会遇到这样或者那样的问题,这不问题就来了
遇到这些问题就是考虑不充分,没有做好测试的表现,怎么能避免呢?

经过

问题一

遇到python依赖的问题,因此项目是采用的crontab的方式执行的,所以在运行时才会发现报错。
先后遇到了缺少这些包

pip install pandas
pip install schedule
pip install requests
pip install pymysql

生产环境虽然使用了requirements.txt,在执行的时候也有列举了一些包,但在这里缺少以上的包

source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

将这些包安装上以后,问题解决。

问题二

在执行过程中,还有遇到此问题

ModuleNotFoundError: No module named 'email.parser'

首先感觉是缺少依赖包,经排查依赖包并没有缺少,在网上搜查资料,说包冲突导致的,仔细检查后发现确实是包冲突导致的。
有个包的名字叫email,修改后问题解决。

复盘

当时就想本地测试怎么通过的?原来是pycharm自动安装了,在做应用开发的时候还在想,上线安装依赖包是个大问题,后来发现确实遇到了这个问题。
命名冲突的情况在本地也遇到过,但那个是文件命名冲突,进行修改后,本地测试也是通过,在生产环境又遇到了包冲突,这个有点费解。
那就归结于
可能是Linux和windows的区别?
还有由于python版本的区别?
本地windows版本3.6.6 Linux python 3.6.4
可能都有关系吧,后续有时间再做深入探讨。

如何避免

避免这种包依赖的问题首先查看本地安装的哪些包
查看安装包的命令有

pip list
python -m pip list
pip freeze

以上三个都能找出相关的依赖包,但pip freeze的方式比较好,直接粘贴到requirements.txt

(venv) D:\work\sourceCode\python\pythonProject>python -m pip list
Package               Version
--------------------- -----------
APScheduler           3.10.1     
........
zipp                  3.6.0
(venv) D:\work\sourceCode\python\pythonProject>
(venv) D:\work\sourceCode\python\pythonProject>pip freeze
APScheduler==3.10.1
......
zipp==3.6.0
(venv) D:\work\sourceCode\python\pythonProject>

将这些包放置在requirements.txt列表中就不会出现缺少包的情况了

针对包名冲突的问题,建议在测试环境做全量测试,这边测试环境匮乏,直接上生产,不仅容易出问题还不规范,建议和生产环境相同的版本进行测试,测试完成后上生产环境。

你可能感兴趣的:(环境问题,python,python,开发语言,pycharm)