Valuebai / awesome-python-io

Python十分钟入门指南/技术图谱,持续更新收集整理中,期待你的参与
MIT License
8 stars 1 forks source link

Python十分钟入门指南/技术图谱

Build Languages License Contributions

我的学习记录,将学习Python过程中遇到的好项目,好技能,好分享记录下来,方便自己查找使用,也希望对你有帮助~

the roadmap of my study and learn from others

环境安装

python思维导图

算法 & 数据结构

在练习和学习中掌握

在项目中成长

common & conf常用配置

Requirements

Pycahrm 打开时加载很慢,indexing不停,scan半天的解决方法


Python 两大web框架之Django

Django官方3.0中文指南

++新手学习的话建议先学flask++

Python 两大web框架之Flask

Flask官方快速入门文档

Flask-Script

Flask的Web开发服务器支持很多启动设置选项,但只能在脚本中作为参数传给app.run()函数。 这种方式很不方便,传递设置选项的理想方式是使用命令行参数。 Flask-Scrip就是这么一个Flask扩展,为Flask程序添加一个命令行解析器。

添加自定义shell命令

def register_plugin(app):

解决跨域问题

from flask_cors import CORS
cors = CORS()
cors.init_app(app, resources={"/*": {"origins": "*"}})

# 连接数据库
from app.models.base import db
db.init_app(app)
with app.app_context():  # 手动将app推入栈
    db.create_all()  # 首次模型映射(ORM ==> SQL),若无则建表; 初始化使用

# Debug模式下可以查阅 API文档
if app.config['DEBUG']:
    from flasgger import Swagger
    from app.api.v1 import create_api_tags_v1
    from app.api.v2 import create_api_tags_v2
    template = {
        # 默认与 conf/setting.py 的 SWAGGER 合并
        'tags': create_api_tags_v1() + create_api_tags_v2()  # 数组
    }
    swagger = Swagger(template=template)  # 可以将secure.py中的SWAGGER全部写入template
    swagger.init_app(app)

### Flask Blueprint,分隔视图
**当你的Flask项目膨胀到一定规模的时候, 全部都写到主入口之中。 一定需要按照模块进行拆分。 Blueprint(蓝图)就是这个时候需要使用的东西。**

- [Blueprint 之中使用日志](https://www.flyml.net/2018/12/12/flask-logging-usage-demo/)
- 完成blueprint框架后,在APP中的blueprint中
```python
from flask import current_app
# 在需要的地方
current_app.logger.info("simple page info...")

持续集成

deploy

Ptyhon创建虚拟环境

方法一:自带命令

  1. 进入文件夹目录
  2. python -m venv -h 可查看帮助信息
  3. 下面的
    
    Linux运行命令行
    $ 创建默认环境:python3 -m venv my_venv 
    $ 创建指定环境:python3.6 -m venv  my_venv,  python2 -m venv  my_venv(添加到系统环境变量中)
    $ 激活环境:. my_venv/bin/activate  (. 或者 source )
    $ 退出环境:deactivate 

Windows系统运行cmd,使用 "py" Python 启动器命令配合 "-m" 开关选项: $ 创建环境:py -3 -m venv my_venv (或者python -m venv my_venv) $ 创建指定环境:py -3.6 -m venv my_venv, py -3.7 -m venv my_venv (添加到系统环境变量中) $ 激活环境:my_venv\Scripts\activate.bat $ 退出环境:deactivate

执行后,会在目录前方出现表明已进入虚拟环境

安装项目: $ pip install -r requirements.txt


### 方法二:Windows在PyCharm下创建虚拟环境
1. 安装并激活PyCharm
这个请自行安装
官方地址:https://www.jetbrains.com/pycharm/

2. 在PyCharm下创建虚拟环境
第一步:点击New Project
第二步:选择下图的New environment
第三步:点击create即可
pycharm会为新创建的项目自动建立一个虚拟环境

### 方法三:conda创建虚拟环境

[anaconda中的常用操作](https://blog.csdn.net/CampusAmour/article/details/83215524)

---
## linux部署指南
### 1. linux sh & nohup后台运行python脚本
  - 1)创建脚本vim run.sh
  - 2)填写内容并保存:nohup python3 -u  run.py > nohup.log 2>&1 &
  - 3)运行:sh run.sh 或者 . run.sh
  - 参考:[Linux sh、source和.命令执行.sh文件的区别](https://www.zengdongwu.com/article3.html) +
            [linux后台执行命令:&和nohup](https://blog.csdn.net/liuyanfeier/article/details/62422742)
```md
      - nohup : 就是不挂起的意思( no hang up),可以在你退出帐户之后继续运行相应的进程
        - 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。
      - python3 -u  run.py : 执行py文件
      - -u的意思就是 uninterrupt不中断的意思,如果你的代码里边有sleep等线程沉睡相关的操作,如果你不-u的话 在后台 它就停住了
      - > nohup.log : 重定向保存日志到当前路径下的nohup.log
      - 2>&1 : 将标准出错也输出到nohup.log文件中
      - & : 最后一个&, 是让该命令在后台执行。

2. 使用gunicorn 部署flask服务 (个人项目推荐使用这个)

需要提前pip install gunicorn
简单地,gunicorn可以通过gunicorn -w 4 -b 0.0.0.0:8001 run:app启动一个Flask应用。其中,

-w 4是指预定义的工作进程数为4,
-b 127.0.0.1:4000指绑定地址和端口
run是flask的启动python文件,app则是flask应用程序实例

其中run.py中文件的可能形式是:
# run.py
from flask import Flask
app = Flask(__name__)

参考文章:
gunicorn部署Flask服务 https://www.jianshu.com/p/fecf15ad0c9a
https://www.cnblogs.com/gaidy/p/9784919.html

3. 使用screen命令部署

4. 使用flask + nginx + uwsgi (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)

5. 使用flask + nginx + gunicorn (大项目推荐使用这个)

linux上杀死gunicorn的进程

方法一

  1. netstat -nltp | grep 8188 能看到类似下面的: tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 23422/gunicorn: mas

  2. kill -9 23422(换成你的)

方法二

  1. 获取Gunicorn进程树
    
    pstree -ap|grep gunicorn

得到的结果如下

Python | | |-grep,14519 --color=auto gunicorn | -gunicorn,28097 /usr/local/bin/gunicorn query_site.wsgi:application -c ... | |-gunicorn,14226 /usr/local/bin/gunicorn query_site.wsgi:application -c ... | | |-{gunicorn},14229 | | |-{gunicorn},14230 ...


2. 重启Gunicorn任务

kill -HUP 14226

3. 退出Gunicorn任务

kill -9 28097

## linux根据端口号查找项目路径方法
### 1. 只知道端口号
1. 首先根据端口号查找进程

netstat -nltp 或者 netstat -nltp | grep python 或者 netstat -apn |grep 10010

2. 然后根据进程号去查找项目路径

ps -ef |grep 8567

3. 如果你第二步没有找到项目路径的话,尝试用

lsof -p 8567

### 2. 如果知道项目部署在tomcat里
如果你的项目在linux 中是部署到tomcat容器里,可以输入下边的命令找到,如下:

ps anx|grep tomcat


## 【技巧】如何通过pycharm实现远程(linux)代码的调试和开发
> https://www.jianshu.com/p/79df9ac88e96

> Pycharm远程连接服务器(windows下远程修改服务器代码),https://blog.csdn.net/zhaihaifei/article/details/53691873

## 【技巧】git查看某个文件的修改历史

> git查看某个文件的修改历史,https://www.cnblogs.com/flyme/archive/2011/11/28/2265899.html

> git log 查看某文件的修改历史,https://www.cnblogs.com/Sir-Lin/p/6064844.html

> Sourcetree右上角

该完善区域

0. 学习路线

Python 学习路径图/思维导图(待更新)

Python 开发应用/职业规划选择

Python 测试/Web/人工智能/大数据/金融量化

Python书籍使用

看这个就够了: 如果有人让你推荐 Python 技术书,请让他看这个列表

-《图解算法,python实现,回头增加下》

其他