python多环境切换所用到的获取系统传入参数

本文介绍了在Flask项目中如何通过命令行参数轻松区分和配置多个环境。例如,通过设置`env=sys.argv[1]`并在启动时传入如`python test.py dev`,可以将`dev`环境传入程序,实现简单而灵活的环境管理。这种方法只是众多可能性之一,欢迎探讨更多实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景
近来一个小需求,flask项目中存在多个环境,现在要把他们区分开执行。这里有个比较简单的小技巧。

实例
当你代码里面已经通过函数定义了获取环境的方法,我们只需要传入某个变量就可以,这时候我们可以:

env = sys.argv[1]

代码启动的时候

python test.py dev

这样我们就把dev传入到了env

结果
很显然,这样我们可以简单的实现需求。 当然,方法不止这一种,还有好多,欢迎来探讨。

### 设置Python环境于Linux #### 安装Python版本管理工具pyenv 为了方便管理和切换不同版本的Python,在Linux上推荐安装`pyenv`。通过执行如下命令可以完成`pyenv`及其依赖项的安装: ```bash sudo apt-get update && sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python-openssl git git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init --path)"' >> ~/.profile source ~/.profile ``` 上述脚本会更新软件包列表并安装编译源码所需的开发库文件,接着克隆`pyenv`仓库到用户的家目录,并修改shell配置文件使得每次启动终端时自动加载`pyenv`初始化指令。 #### 使用pyenv安装特定版本的Python解释器 一旦成功设置了`pyenv`,就可以利用它来下载和构建指定版本的Python解释器实例: ```bash pyenv install 3.x.y # 将"x"和"y"替换为目标次版本号与修订版号 pyenv global 3.x.y # 设定全局默认使用的Python版本为刚刚安装的那个 ``` 这允许在同一台机器上的多个项目之间轻松切换不同Python运行时环境而不会相互干扰。 #### 配置虚拟环境以隔离各个项目的依赖关系 对于每一个新的应用程序或者实验性质的任务来说,创建独立的虚拟工作区是非常重要的实践之一。借助`virtualenvwrapper`插件能够简化这一过程的操作流程: ```bash pip install virtualenvwrapper echo 'export WORKON_HOME=$HOME/.virtualenvs' >> ~/.bashrc echo 'source /usr/local/bin/virtualenvwrapper.sh' >> ~/.bashrc source ~/.bashrc mkvirtualenv myprojectname # 创建名为myprojectname的新虚拟环境 workon myprojectname # 切换至该虚拟环境中开展后续操作 deactivate # 当前退出所处的任何活动中的虚拟环境 rmvirtualenv myprojectname # 删除不再需要的旧有虚拟环境 ``` 以上步骤展示了怎样建立一个新的虚拟空间供日常编码调试之用;同时也介绍了几个常用的管理命令以便日后维护这些临时性的沙盒区域。 #### 获取与设定环境变量的方法 当涉及到跨进程通信或是外部资源定位的时候,往往需要用到操作系统级别的环境参数作为媒介传递必要的信息给程序本身。在Python里可以通过访问内置模块`os`下的属性字典对象`environ`来进行读写这类特殊的数据结构[^2]。 要获取当前已存在的某个键对应的值可采用下面的方式实现: ```python import os value = os.getenv('KEY_NAME') or os.environ.get('KEY_NAME') print(f"The value associated with KEY_NAME is {value}.") ``` 如果想要新增加一条记录或者是覆盖已有条目,则只需简单赋值即可生效: ```python os.environ["NEW_KEY"] = "desired_value" # 或者更安全的做法是先判断是否存在再做处理 if not os.environ.get("EXISTING_KEY"): os.environ["EXISTING_KEY"] = "new_desired_value" ``` 最后提醒一点要注意的是某些敏感数据不应该硬编码进源代码里面去,而是应该放在配置文件或者其他形式的安全存储介质之中妥善保管起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值