背景:最近在使用Python3.11编写脚本来获取google play中app的用户评论,脚本中需要安装多个依赖包,在本地Pycharm调试通过以后,上传到github,然后在linux服务器拉取脚本来运行,发现存在几个问题。本文将面临的问题记录下来,供自己学习,也希望其他人遇到类似问题以后,能作为一个参考。
问题1: 在本地依赖多个包,到服务器后需要手动依次安装多个依赖包吗?当然不是。
解决方法:
1. 在本地使用虚拟环境。在项目的根目录下执行python3 -m venv demo,其中demo为虚拟环境的名称,自己随便定义。
2. 然后执行pip3 freeze > requirements.txt,含义是用于生成一个包含当前 Python 环境中所有已安装包及其版本号的 requirements.txt
文件。
3. 执行souce demo/bin/activate 激活虚拟环境,再执行which python3,发现是虚拟环境下的Python解释器。这说明虚拟环境激活成功,或者看命令行最左面有(venv),也可以说明虚拟环境激活成功了。
4. 执行pip3 install -r requirements.txt 在虚拟环境安装所有的依赖包。上传代码到github
4. 登录服务器,来取代码。注意:服务器和本地开发环境Python版本要一致,避免出现兼容性问题。笔者本地和服务器使用的Python版本都是3.11版本
5. 拉取代码到服务器以后,发现会存在demo的一个虚拟环境目录,执行souce demo/bin/acitvate激活虚拟环境。到这里我以为自己不需要在服务器按照依赖包了。因为依赖包在本地都已经安装在venv/lib/python3.11/site-packages了。此时引出下面的第2个问题。
问题2:在服务器的虚拟环境下执行which python3 发现解释器还是服务器下的目录,不是虚拟环境下的解释器目录,执行