我的学习记录,将学习Python过程中遇到的好项目,好技能,好分享记录下来,方便自己查找使用,也希望对你有帮助~
the roadmap of my study and learn from others
【Python环境安装与搭建】
【PyCharm安装】
./python-ide/:记录python环境的其他说明 readme.md记录Ptyhon创建虚拟环境的方法
Leetcode刷题指南101,follow漂亮小姐姐: https://valuebai.github.io/2020/01/01/Leetcode%E5%88%B7%E9%A2%98%E6%8C%87%E5%8D%97101-follow%E6%BC%82%E4%BA%AE%E5%B0%8F%E5%A7%90%E5%A7%90/
./run_leetcode/:记录学习算法相关代码
++新手学习的话建议先学flask++
添加自定义shell命令
解决跨域问题 from flask_cors import CORS
# app = create_app() 在run.py中调用
# 在__init__.py中添加def create_app(), register_blueprint(app), register_plugin(app)
def create_app():
app = Flask(__name__, static_folder="./static", template_folder="./static/views")
app.config.from_object('app.config.secure')
app.config.from_object('app.config.setting')
register_blueprint(app)
register_plugin(app)
return app
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...")
Jenkins CI: https://www.cnblogs.com/cnkemi/p/9051910.html
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文件中
- & : 最后一个&, 是让该命令在后台执行。
1)创建脚本vim gunicorn.sh
2)填写内容并保存:
3)运行:sh gunicorn.sh 或者 . gunicorn.sh
需要提前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
关于screen,详情见:https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
杀死所有命令的:ps aux|grep 你的进程名|grep -v grep | awk '{print $2}'|xargs kill -9
https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux
方法一
netstat -nltp | grep 8188 能看到类似下面的: tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 23422/gunicorn: mas
kill -9 23422(换成你的)
方法二
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右上角
该完善区域
看这个就够了: 如果有人让你推荐 Python 技术书,请让他看这个列表
-《图解算法,python实现,回头增加下》