今天给大家讲一下如何搭建一个舒适的 Python 环境,包括本地环境和远程调试环境,然后再附送给大家两套好用的 Python Web 框架。在这个过程中,还穿插着介绍一些适合于初学者的神器,希望大家中意~
1 安装 Python
***步,当然是安装 Python 啦。
1.1 Mac 系统
Mac 系统默认是安装了 Python2.7 的。我们如何另外安装一个 Python3 呢?
首先,推荐你安装神器 HomeBrew 作为命令行下的管理软件。
HomeBrew 的安装方法:
- ruby -e "$(wget -O- https://raw.github.com/Homebrew/linuxbrew/go/install)"
安装完毕后使用 brew help命令即可查看brew的各种用法啦。
现在我们只要使用这条命令: brew install python3,即能轻松安装上 python3 了。
然后我们使用 brew info python2或者 brew info python3就能查看 Python 2/3 的具体信息,妈妈再也不用担心我找不到 Python 的位置了!
***,使用 brew list可以查看目前所有通过 brew 安装的命令行工具,其它的用法就通过 brew help自行查阅吧。
1.2 Ubuntu 系统
Ubuntu 系统使用的是则默认的包管理工具 apt 。使用如下命令即可安装 python :
- apt install python2 #安装python2
- apt install python3 #安装python3
然后,在 Ubuntu 下有两点是需要注意的。
一个是 Python 的定位,我们用 whereis 命令来查看其所在的文件夹:
- whereis python
另一个是 Pip 的安装——Pip 是 Python 的包管理插件。
首先安装 setuptools :
- wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
- tar -zxvf setuptools-19.6.tar.gz
- cd setuptools-19.6
- python3 setup.py build
- python3 setup.py install
然后给 Python3 安装 pip:
- wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
- tar -zxvf pip-8.0.2.tar.gz
- cd pip-8.0.2
- python3 setup.py build
- python3 setup.py install
然后输入 pip3,如果有正常返回,那么大功告成!
1.3 Python2/3 轻松分离
有时候我们只想使用 Python3,但是 Python2 会干扰到,那么怎么解决呢?
很简单,在要用 Python3 的时候不是输入 Python 而是输入 Python3,在使用 Python3 的 pip 的时候不是输入 pip 而是输入 pip3。
例如,给 Python3 安装 Flask :
- pip3 install Flask
2 Pycharm 神器管理本地环境
然后,当当,就是我们第二个神器登场啦,就是大名鼎鼎的 Pycharm 代码编辑器。
https://www.jetbrains.com/pycharm/
Pycharm 分为社区版(免费)和专业版(付费),二者***的区别就是付费版本的 Pycharm 支持远程调试。
2.1 创建新项目
我们来创建一个新项目。
主要的参数有两个,一个是 Location ,项目的地址。
第二个是 Project Interpreter 项目解释器,也就是你要使用哪个 Python 。如果选择 New environment using 呢,就是新建一个虚拟环境,和本机安装的 Python 互不干扰。如果选择 Existing Interpreter,则是使用本机的现有环境。
如果本机安装的 Python 没显示怎么办?那么点击***边的省略号,选择 System Interpreter,再点击一次省略号,就能添加了。
然后我们找到 Python 的所在位置,添加即可。如何找到 Python 位置?请见***部分。
2.2 改变已有项目的环境
如果一开始配置错了,那么该怎么办呢?
点击 Pycharm > Preference > Project > Project Interpreter设置即可。
2.3 Pycharm 中包的安装
在 Pycharm 中,安装 Python 的包有两种方法,一种方法是在刚才的 Project Interpreter 界面里,使用加减号进行包的安装与卸载。
在安装一两个包的情况下,这种方法是一种简便的方法。那么如果是很多的包呢?这种时候我们就要用到 pip 了。
一般而言,github 中规范的 python 源码会提供一个叫 requirements.txt 的文档,文档里记录的是要安装的包的名称以及版本。
然后我们打开 Pycharm 里的终端窗口:
只要到 requirements.txt 所在的目录下,使用 pip3 install-r requirements.txt命令,就能在当前的 python 环境中导入所有需要的包啦,很方便。
那么,我们在做项目的时候,如何生成 requirements.txt 以供自己和他人使用呢?同样是一行命令就能搞定的事: pip freeze>requirements.txt。
怎么样,你 get 了吗?
3 Pycharm 轻松实现远程调试
某些时候,我们会涉及到在服务器上运行 Python 程序,那么我们就需要对 Pycharm 做一些配置。
注意,只有 Pycharm Pro 支持远程调试。
3.1 配置远程连接
首先,假定我们手头有一台服务器,并有服务器的账号和密码。
然后打开Tools > Deployment > Configuration > new
如下内容是要我们填写的:
- SFTP host:服务器地址
- Port:端口,默认22,一般不用改它。
- Root path:在服务器上的路径。
- User name:服务器上的用户名
- Password:服务器上的密码
再点击Mapping:
- Local path:映射到服务器上对应位置的本机地址
- Deploy path:服务器上的文件夹位置。Root path + Deploy path 就是服务器上我们文件所在的完整路径。
配置完成后,点击Tools > Browse Remote Host,右侧出现我们服务器上的文件,就说明远程连接成功了!
添加远程 Python 解释器
接下来我们添加远程 Python 解释器,就能在本地「遥控」远程的服务器执行我们的 Python 程序了。
点击 Pycharm > Preference > Project > Project Interpreter > SSH Interpreter
输入 地址、用户名、密码三件套。
Alright,试着在服务器上运行 Hello World 吧!
4 Python Web 环境搭建
这里是本文的重头戏了——如何用 Python 在服务器上搭建一个网站。
这里推荐 Python-Flask + Nginx + Gunicorn +Supervisor + Sqlite 的方案,因为这几个软件都对新手非常友好。其中 Python-Flask 是后端核心,Nginx 是前端服务器,Gunicorn 是后端服务器,Supervisor 是进程监控软件,Sqlite 是轻型数据库。
4.1 配置 Python-Flask 框架
首先,我们 git clone一个Python框架。
无数据库的 Flask 框架:
https://github.com/albertschr/MixinEOSPlayer/tree/master/Python/FlaskSketchNosql
有数据库的 Flask 框架:
https://github.com/albertschr/MixinEOSPlayer/tree/master/Python/Flask_Sketch
然后先在服务器上安装必要的 Python 包:
- pip install -r requirements.txt
接着测试一下框架是否能正常运行:
- python3 run.py
如果显示`Running on http://127.0.0.1:5000 表示框架运行正常。
4.2 安装 Nginx、Gunicorn 与 Supervisor
在服务器上运行:
- apt install nginx
- pip3 install gunicorn
- apt install supervisor
4.3 修改 nginx 的配置文件
nginx 的配置文件在 /etc/nginx/sites-available 目录下,default 文件。
- server {
- listen 80;
- listen [::]:80;
- server_name example.com;
- root /home/git;
- index index.html;
- location / {
- try_files $uri $uri/ =404;
- }
- }
我们要做以下两件事:
- 修改 root 为我们前端文件所在的目录。
- 在 location 中添加一行 expires-1;,以让页面能即时刷新。
4.4 配置 supervisor
在你喜欢的目录下生成 supervisor.conf 文件:
- echo_supervisord_conf > supervisor.conf # 生成 supervisor 默认配置文件
打开配置文件:
- nano supervisor.conf
在底部添加:
- [program: [项目名称] ]
- command=gunicorn -w4 -b0.0.0.0:1234 run:app ; supervisor启动命令,文件叫run.py,run.py里面执行的类叫app。
- directory=[项目目录] ; 项目的文件夹路径
- startsecs=0 ; 启动时间
- stopwaitsecs=0 ; 终止等待时间
- autostart=false ; 是否自动启动
- autorestart = true ; 程序异常退出后自动重启
- startretries = 3 ; 启动失败自动重试次数,默认是 3
- stdout_logfile=[日志目录]/gunicorn.log
- stderr_logfile=[日志目录]/gunicorn.err
把上面的项目名称、项目目录、日志目录改成自己的即可。
4.5 修改run.py
把 run.py 从本地运行改为服务器上运行。
把 app.run那行注释掉,添加以下代码:
- if __name__ == '_main_':
- app.run(host="0.0.0.0",debug=True)
- #无需填写端口,因为gunicorn中已经填了
万事Okay。执行下面命令,你的后端服务器就运行起来啦!
- supervisorctl -c supervisor.conf reload
- supervisorctl -c supervisor.conf start all
4.6 supervisor 的用法
- supervisord -c supervisor.conf 通过配置文件启动supervisor
- supervisorctl -c supervisor.conf status 察看supervisor的状态
- supervisorctl -c supervisor.conf reload 重新载入 配置文件
- supervisorctl -c supervisor.conf start [all]|[appname] 启动指定/所有 supervisor管理的程序进程
- supervisorctl -c supervisor.conf stop [all]|[appname] 关闭指定/所有 supervisor管理的程序进程
4.7 supervisor 的小 bug
有时候,因为服务器重启等原因 supervisor会出现一个 error :
- error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 228
这时候,运行以下两个命令:
- sudo supervisord -c /etc/supervisor/supervisord.conf
- sudo supervisorctl -c /etc/supervisor/supervisord.conf
再执行:
- supervisorctl -c supervisor.conf reload
就能解决。
5 总结
搭建 Python 环境对于初学者来说,有时候还挺费劲。因此,我把 Python 环境搭建中的五项基础技能集成在这一篇文章里啦:
- 如何安装 Python
- 如何安装及使用 Pip
- Pycharm 本地怎么配置
- Pycharm 如何配置远程调试环境
- 怎么在服务器上搭一个以 Python 为后端核心的网站
希望能对大家有所帮助!