flask的坑


flask入坑

前几天用flask框架给学校里面一个玩票的创业团队搭了个小小小的网站,代码数量接近千行吧,算是我接触过的第一个稍微正式而大型的项目。选用flask的原因很简单,对python的喜爱,但是这python真是坑我不小啊,包括linux的坑也是进了不少。

python编码问题

众所周知字符是需要编码的,python代码是字符当然也需要编码,但是一般情况下个人不需要考虑编码问题,就好像那些字符,字母,中文本来就是计算机系统的一部分一样,但是这种不需要注意的情况似乎并不存在于python2.7当中,python2.7中如果使用了中文就需要在代码的开头声明编码方式,形如-*coding:UTF-8*-或者是...encoding:...什么什么的,其他声明方式太复杂了,我只记得-*coding:UTF-8*-。但是我几乎已近放弃python2了,所以这些问题我也不想再考虑了。

当然如果只是再一个代码文件添加一个编码声明这并不算什么坑,真正的坑在于……当你这么做完以后在flask框架中向动态页面传送数据时会遇到一个无法序列化的问题,我也不知道怎么解决,最后还是换python3吧,python3默认采用UTF-8编码方式,这样对中文的支持就好多了。

python虚拟环境

据说python用虚拟环境会更好,毕竟python解释器才那么点大,但是,但是,直接用python原声的pyvenv创建出来的虚拟环境是没有自带python解释器的,他只是有一个python解释器的链接,而没有一个实际可执行的解释器,当你把python虚拟环境移动到另外的系统里面的时候,这个链接就失效了,所以说这就是为什么要pip freeze > reqiurment.txt一个reqiurment.txt而后用pip install -r reqiurment.txt来安装这个虚拟环境中所有的包–当然这是在另外一个虚拟环境里面。(为什么不附带一个真实的可执行文件呢?原因可能是linux严格的用户和权限管理,当你直接上传了一个文件,这个文件大概不会直接成为一个可执行文件。而且,得益于linux真实的用户管理,一个文件上传之后所有者仍然没有变!所以这时一个服务器上的普通用户甚至不能查看这个文件夹里面到底有什么。)

另外你会发现在一个真实的python环境下面用pip安装python包是要用root权限的,但是在虚拟环境就不需要,原因可能是真实环境下面安装python包需要改动root用户所有的文件夹。

linux的编码问题

这个也不知道是怎么回事,据说centos在服务器上表现很好,于是选用centos作为在服务器上面的系统,结果发现……centos的包管理器里面的包真是又少又旧,如果有下次就用debain了。据说centos必编译,可是编译安装真是太麻烦了。更坑的是用nano或者vi打开文件之后居然乱码了,改了编码方式之后居然还是乱码,现在想起来最大的原因应该是没有安装中文字体,不过反正我本地编辑之后已经重新上传了。

python服务器部署真的很复杂

尤其是ngnix。真的,相比之下php或者asp.net的部署真的容易太多了,nginx的文档真的很难读,而且我真的不知道为什么ngnix或者uWGSI或者gunicorn有那么多配置选项,我不过是想监听本地ip的80端口而已,为什么这么复杂?
最后我用gunicorn部署了,没加前端代理。不过问题不大,我老师从来不加。


文章作者: Gregor
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gregor !
 上一篇
前端概论 前端概论
html的起源早在计算机的上古时代,那个时候还没有浏览器,很少有人能够通过互联网交流。就在这个时候,有一家叫做netscape(网景)的公司,开发了一种叫做“浏览器”的程序。通过浏览器和超文本标记语言,内容的呈现可以不受制于载体。html的
2017-03-26
下一篇 
重新思考设计模式 重新思考设计模式
UML:关联?依赖?组合?最近在看flask框架,flask实在是太自由了,让用户自己设计程序结构,这不禁让我在考虑软件的组织问题。然而后来我发现拿脑子来缓存程序结构实在是太……蛋疼了,看到一些东西就忘了。然后我想借助UML图来分析程序结构
  目录