python中好用的脚手架

2,783 阅读3分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

1 virtualenv多环境管理

# 安装virtualenv
pip install virtualenv
# 虚拟环境目录
/var/.venv
# 创建虚拟环境
virtualenv test_venv
# 使用
/var/.venv/test_venv/Scripts/activate
# 退出
deactivate

2 pyenv

2.1 pyenv安装

macOS使用homebrew安装
  • Mac下安装了homebrew之后使用homebrew安装pyenv。
brew update
brew install pyenv
brew upgrade pyenv #之后如果需要更新pyenv
  • 在安装成功之后需要在.bashrc或者.bash_profile中添加三行来开启自动补全。
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • 更新环境变量
source .bash_profile
CentOS安装
$ 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 -)"' >> ~/.bashrc
$ exec $SHELL -l
Ubuntu安装
$ 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 -)"' >> ~/.bashrc
$ exec $SHELL -l

2.2 使用pyenv管理Python多版本

安装流程
  • 查看已安装Python版本: pyenv versions
  • 查看当前Python版本: pyenv version
  • 查看可安装的Python版本: pyenv install -l
  • 安装Python: pyenv install <version> # version为版本号
  • 更新pyenv数据库: pyenv rehash
  • 查看当前Python版本: which python or python --version
  • 卸载Python版本: pyenv uninstall <version> #卸载版本号为<version>的Python
  • Python版本管理
    pyenv global <version>
    # 全局设置python版本为指定版本,设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
    
    pyenv local <version>
    # 设置当前路径下python版本为指定版本,设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。
    
    pyenv shell <version>
    # 设置当前shell窗口使用的python版本为指定版本,设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。这个版本的优先级比 local 和 global 都要高。–unset 参数可以用于取消当前 shell 设定的版本。
    

2.3 安装异常处理

macOS安装失败
macOS如果安装Python失败: `brew install zlib` and `brew install xz` and 重启
Linux安装失败(如果pyenv install 3.6.6时报BUILD FAILED错误)
  • 安装依赖库
-- CentOS安装依赖库
yum install readline readline-devel readline-static -y
yum install openssl openssl-devel openssl-static -y
yum install sqlite-devel -y
yum install bzip2-devel bzip2-libs -y

-- Ubuntu安装依赖库:
sudo apt-get install libbz2-dev
sudo apt-get install libssl-dev
sudo apt-get install libreadline6 libreadline6-dev
sudo apt-get install libsqlite3-dev
  • 如果上述仍未修复
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

2.4 使用pyenv-virtualenv管理Python虚拟环境

  • 安装
$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ source ~/.bashrc
  • 创建虚拟环境: pyenv virtualenv 3.6.6 py3_flask
  • 激活虚拟环境: pyenv activate py3_flask
  • 退出虚拟环境: pyenv deactivate
  • 删除虚拟环境: pyenv uninstall py3_flask

2.5 Python卸载

macOS安装包安装的Python卸载方法
  • 正如开篇所言,Mac 自带的 Python 已经能够满足我们的需要了,因此很多同学在安装完 Python 之后,又想要将其删除,或者称之为卸载。对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成:
    • Python framework,即 Python 框架;
    • Python 应用目录;
    • 指向 Python 的连接。
  • 对于 Mac 自带的 Python,其框架目录为:
    System/Library/Frameworks/Python.framework
  • 而我们安装的 Python,其(默认)框架目录为:
    /Library/Frameworks/Python.framework
  • 接下来,我们就分别(在 Mac 终端进行)删除上面所提到的三部分。
  • 第 1 步,删除框架:
    sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x
  • 第 2步,删除应用目录:
    sudo rm -rf "/Applications/Python x.x"
  • 第 3 步,删除指向 Python 的连接:
    cd /usr/local/bin/
    ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/x.x' | awk '{print $9}' | tr -d @ | xargs rm

3 cookiecutter

# 下载安装
pip install cookiecutter
cookiecutter https://github.com/mtooooo/cookiecutter-flask.git
# 安装依赖包
pip install -r myflaskapp\requirements\dev.txt
pip install -r myflaskapp\requirements\prod.txt
#启动方式一
if __name == '__main__':
    app.run()
# 启动方式二
cd myflaskapp
flask run
# 启动后,访问http://127.0.0.1:5000
# 数据库皮配置README.rst文件

set FLASK_APP=/path/to/autoapp.py
set FLASK_DEBUG=1
flask db init
flask db migrate
flask db upgrade
flask run

#重启尝试注册服务

4 虚拟环境管理poetry

# 安装
pip install poetry
# 使用poetry进行包管理
poetry install
# 启动服务
poetry run flask run
# 打包wheel文件
poetry build 

5 fabfile代码推送服务

from fabric import task

@task
def upload_and_unpack(c):
    if c.run('test -f /opt/mydata/myfile', warn=True).failed:
        c.put('myfiles.tgz', '/opt/mydata')
        c.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')
  • 可用任务:
$ fab --list
Available tasks:

  upload_and_unpack
  • fab单个服务器调用任务时:
$ fab -H web1 upload_and_unpack
  • 多个主机,该主机多次运行任务,每次都Connection提交不同的实例:
$ fab -H web1,web2,web3 upload_and_unpack