python in action

记录一些python的使用感想

记录一些python上手的基本tips。基本的grammar整理在另外一篇。

这种用了一些python的东西,总体感觉python不是一门严肃的语言,编写代码的速度是快,但是项目变得大了之后,维护起来就不是太容易了。虽然还是想多写一些Golang,但是事情总是不可能都像自己预先想象的那样。

编辑器与环境

项目用的是Flask框架编辑器用的pycharm,感觉主要的功能都具备了,调试起来也比较方便。
flask使用可以具体参考这个,主要是关于虚拟环境的使用。

每一个python项目都应该用一个virtualenv把项目之前的环境隔离开,否则,在项目之间进行切换的时候,依赖之间会相互冲突。

virtualenv创建好之后,直接source .//bin/activate 文件就会自动进入env环境。

在使用pycharm调试的时候,还有些地方需要注意。

在run/debug configureration的地方,scripts要调成flask应用的入口程序,比如app.py。之后千万别忘记加上环境变量,在后面有设置环境变量的选项。同时还要把python inerpreter设置成自己virtual环境中的那一个。在virtual环境中,都有一个自带的子编辑器。

然后根据提示,进入虚拟环境,把改装的依赖都安装好,这个时候依赖就安装在自己的子环境中,彼此隔离开,不会对host造成污染。python的相关包都是使用pip工具进行管理的,使用pip freeze命令可以一次导出该项目的所有安装包,正式部署的时候回更方便点。

在这个项目中,使用了setup.py进行管理,直接python setup.py install就可以把代码build打包好,之后直接运行<项目名>,就可以启动程序。

pycharm在debug的时候还是很方便的,特别是对于那种数据量比较多的项目来说。

pycharm可以使用学生邮箱进行免费注册。

注意 pycharm 会生成一个.idea文件,在项目的当前的目录下,里面存了一些服务启动时候的相关信息,git commit的时候,不需要把这些信息commit上去。

pycharm使用好的话,可以提高很多效率。debug的时候,注意有可能开了多个环境,注意不要冲突了,一般在线上的话,或者说是production env常常通过setup.py的形式安装,注意路径,看实际正在运行的,是哪一份代码。

一些新的更新: virtual env 可能是比较早的一些python环境的开发,现在都是直接用anaconda的环境了,虽然理论上都是利用virtual env,但是实际操作上,对于一些maching learning的library的安装还是anaconda比较方便一些,遇到问题也能比较快地在网上找到解决的方案。

关于语言特性

2.x还是3.x本身就是个问题,不过考虑linux 上多数还是2.7还就坚持用2.7吧,不要纠结于语言本身,用这个语言做什么,才是关键所在。(这个blog是很早写的,现在基本上都是3.x了)

python connect mysql
refer to
http://blog.sina.com.cn/s/blog_45ac0d0a010180aw.html
salAlcheemy sql orm
http://www.jianshu.com/p/e6bba189fcbd

python 错误处理
server 不挂?`···

sqlalchemy使用整理
最全的资料还是参考官方文档(https://docs.sqlalchemy.org/en/13/core/type_basics.html)。

最多的一个错误是,在数据库中定义的字段和在ORM中建立的表的字段不一致,之后导致数据转换的时候发生问题。

python的测试
pyunit以及mock

参考:
http://blog.csdn.net/sasoritattoo/article/details/17448397

启动一个进程作为新的daemon运行

注意进程的问题 重新fork一下出来 原进程结束的时候 子进程就结束???这块关系还是弄得不清楚。。。或者是按照daemon的方式运行

注意传入新的变量

def run_daemon_thread_with_app_context(target, *args, **kwargs):
from dce.api.service import app
def invoke_with_app_context():
with app.app_context():
target(*args, **kwargs)
job_thread = threading.Thread(target=invoke_with_app_context)
job_thread.setDaemon(True)
job_thread.start()

关于科学计算

参考这个

http://old.sebug.net/paper/books/scipydoc/numpy_intro.html

画图

http://blog.csdn.net/daniel_ustc/article/details/9714163

ubuntu 下面安装 matplotlib的一个错误:

http://stackoverflow.com/questions/25674612/ubuntu-14-04-pip-cannot-upgrade-matplotllib

数学处理的一些教程

http://blog.csdn.net/lsjseu/article/details/20359201?utm_source=tuicool&utm_medium=referral

http://blog.csdn.net/mokeding/article/details/17476979

中文手册
http://platinhom.github.io/2015/09/15/numpy-use/

http://www.cnblogs.com/prpl/p/5537417.htmlnume

推荐文章