@hitchhacker
2018-07-22T12:13:09.000000Z
字数 5231
阅读 1811
今天给大家讲一下如何搭建一个舒适的 Python 环境,包括本地环境和远程调试环境,然后再附送给大家两套好用的 Python Web 框架。在这个过程中,还穿插着介绍一些适合于初学者的神器,希望大家中意~
第一步,当然是安装 Python 啦。
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
自行查阅吧。
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,如果有正常返回,那么大功告成!
有时候我们只想使用 Python3,但是 Python2 会干扰到,那么怎么解决呢?
很简单,在要用 Python3 的时候不是输入 Python 而是输入 Python3,在使用 Python3 的 pip 的时候不是输入 pip 而是输入 pip3。
例如,给 Python3 安装 Flask :
pip3 install Flask
然后,当当,就是我们第二个神器登场啦,就是大名鼎鼎的 Pycharm 代码编辑器。
Pycharm 分为社区版(免费)和专业版(付费),二者最大的区别就是付费版本的 Pycharm 支持远程调试。
我们来创建一个新项目。
主要的参数有两个,一个是 Location ,项目的地址。
第二个是 Project Interpreter 项目解释器,也就是你要使用哪个 Python 。如果选择 New environment using 呢,就是新建一个虚拟环境,和本机安装的 Python 互不干扰。如果选择 Existing Interpreter,则是使用本机的现有环境。
如果本机安装的 Python 没显示怎么办?那么点击最后边的省略号,选择 System Interpreter,再点击一次省略号,就能添加了。
然后我们找到 Python 的所在位置,添加即可。如何找到 Python 位置?请见第一部分。
如果一开始配置错了,那么该怎么办呢?
点击 Pycharm > Preference > Project > Project Interpreter设置即可。
在 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 了吗?
某些时候,我们会涉及到在服务器上运行 Python 程序,那么我们就需要对 Pycharm 做一些配置。
注意,只有 Pycharm Pro 支持远程调试。
首先,假定我们手头有一台服务器,并有服务器的账号和密码。
然后打开Tools > Deployment > Configuration > new
如下内容是要我们填写的:
再点击Mapping:
配置完成后,点击Tools > Browse Remote Host,右侧出现我们服务器上的文件,就说明远程连接成功了!
接下来我们添加远程 Python 解释器,就能在本地「遥控」远程的服务器执行我们的 Python 程序了。
点击 Pycharm > Preference > Project > Project Interpreter > SSH Interpreter
输入 地址、用户名、密码三件套。
Alright,试着在服务器上运行 Hello World 吧!
这里是本文的重头戏了——如何用 Python 在服务器上搭建一个网站。
这里推荐 Python-Flask + Nginx + Gunicorn +Supervisor + Sqlite 的方案,因为这几个软件都对新手非常友好。其中 Python-Flask 是后端核心,Nginx 是前端服务器,Gunicorn 是后端服务器,Supervisor 是进程监控软件,Sqlite 是轻型数据库。
首先,我们git clone
一个Python框架。
无数据库的 Flask 框架:
https://github.com/albertschr/Mixin_EOS_Player/tree/master/Python/Flask_Sketch_Nosql
有数据库的 Flask 框架:
https://github.com/albertschr/Mixin_EOS_Player/tree/master/Python/Flask_Sketch
然后先在服务器上安装必要的 Python 包:
pip install -r requirements.txt
接着测试一下框架是否能正常运行:
python3 run.py
如果显示`Running on http://127.0.0.1:5000 表示框架运行正常。
在服务器上运行:
apt install nginx
pip3 install gunicorn
pip3 install supervisor
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;
}
}
我们要做以下两件事:
expires -1;
,以让页面能即时刷新。在你喜欢的目录下生成 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
把上面的项目名称、项目目录、日志目录改成自己的即可。
把 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
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管理的程序进程
有时候,因为服务器重启等原因 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
就能解决。
搭建 Python 环境对于初学者来说,有时候还挺费劲。因此,我把 Python 环境搭建中的五项基础技能集成在这一篇文章里:
希望能对大家有所帮助!ღ( ´・ᴗ・` )