Python新手如何区分生产环境和测试环境?
刚学 python, 本地测试 windows 有一套 py 的环境和三方库, linux 服务器上的 py 环境每一次都需要同步一次 windows 的三方库吗?
之前一直用的 java,通过打包可以把依赖直接放进 jar 中,这样在任何服务器上就只需要一个运行环境就可以。 Python 有这一套东西吗? 还没开始实施,有些方面疑问。
Python新手如何区分生产环境和测试环境?
了解一下 python 的虚拟环境 Virtualenv
可以 打包发布, 跟你说的效果一样。
大概意思是:
1.创建虚拟环境
2.使用 pip 等包管理安装包
3.打包你的环境并发布
有一篇虚拟环境的文章推荐给你(我自己写的。。。)
https://www.zhutingyu.com/python-xu-ni-huan-jing
核心就两点:配置隔离和环境标识。
别在代码里写死配置。用环境变量或者独立的配置文件。比如建个config.py:
import os
class Config:
SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key')
DATABASE_URI = os.getenv('DATABASE_URI', 'sqlite:///dev.db')
DEBUG = False
class DevelopmentConfig(Config):
DEBUG = True
class ProductionConfig(Config):
SECRET_KEY = os.getenv('SECRET_KEY') # 生产环境必须设置
DATABASE_URI = os.getenv('DATABASE_URI')
# 通过环境变量决定用哪个配置
env = os.getenv('FLASK_ENV', 'development')
if env == 'production':
config = ProductionConfig()
else:
config = DevelopmentConfig()
然后通过一个叫FLASK_ENV或者APP_ENV的环境变量来切换。启动时这么干:
# 测试环境
export FLASK_ENV=development
python app.py
# 生产环境
export FLASK_ENV=production
python app.py
简单说,就是用环境变量来切换配置。
pip freeze > requirements.txt 导出依赖文件
pip install -r requirements.txt 安装
我是这样搞定依赖的, 其他不太清楚
Virtualenv 可以看我的博客
建议去 github 看看 pipenv
此外,这两年也很流行用 Docker 来让开发环境与生产环境高度一致化和发布简单化。
虚拟环境,建议 miniconda, 其它的多多少少都有点问题,尤其在 win 上,有些包可能都安装不上
用 pipenv 吧,比 Virtualenv 好使
顾名思义 pip+env
开发一个环境,最后部署的化用 docker 会比较好


