1.python的导入路径问题
https://laike9m.com/blog/pythonxiang-dui-dao-ru-ji-zhi-xiang-jie,60/ 这篇文章已经说的很详细了,这里主要是自己的理解和解决办法
在实用python命令运行文件a.py的时候,这个时候python是将a.py文件所在的文件夹当成了top—level,也就是顶层目录,如果要引用上一层的文件,比如是用from ..Utils import util 这样是不行的,因为这时候在python看来是没有上一层的,所以..对python来说是没有用的。
故 程序入口文件只能使用绝对路径导入
问题又来了,使用绝对路径导入的时候,python会从sys.path中扫描你要导入的包,在本地开发的时候,直接运行的时候本地项目的根目录是默认加在sys.path中的,所以使用from superPackage.package import util是可行的,但是在服务器linux上运行的时候,项目路径并没有在sys.path中,如何把项目的跟目录加到sys.path中让服务器环境变的跟本地环境一样呢?有很多种办法,可以使用sys.path.append方法,可以在site-packages 文件中创建 .pth文件,将模块的路径写进去,一行一个路径,当然最好的办法是加一个PYTHONPATH环境变量,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的)分开,如果PYTHONPATH 变量不存在,可以创建它。
2.pip安装的时候使用阿里云的镜像
在~/.pip/ 目录下创建pip.conf文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%\pip\pip.ini),文件格式为UTF8无BOM格式,没有该文件夹就创建一个,pip.ini内容如下:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
3.在linux上使用pymssql和freetds在linux上连接SqlServer
step 1:下载并安装freetds-dev,下载地址:ftp://ftp.freetds.org/pub/freetds/current/freetds-dev.1.00.tar.gz,
解压,进入解压后的文件夹,执行
./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
make
make install
在/usr/local/freetds/bin里执行tsql -H ip -U username -P password 测试连接
step 2:配置环境变量【非常重要】,在/etc/profile最后添加以下代码并执行source /etc/profile 使其生效
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/:
step3:安装pymssql,pip install pymssql
step4:在python命令行使用pymssql.connect(server='ip',user='',password='')测试连接,需import pymssql
4.使用ipython和notebook
安装ipython:pip install ipython
安装notebook:pip install jupyter notebook
使用ipython启动notebook:ipython notebook
notebook常用快捷键:shift+enter 执行命令
5.python2.x兼容python3.x
6.使用timeit测试程序运行速度,这是目测最好用的一种办法
import timeit
times = timeit.Timer(lambda: test()).timeit(10) # test()为要测试的函数,10表示重复的次数
print(times)
7. python2.x中文编码问题解决
方法一:在程序文件中以下三句
import sys
reload(sys)
sys.setdefaultencoding('utf8')
方法二:修改Python本环境(推荐)
在Python的Lib\site-packages文件夹下新建一个sitecustomize.py文件,
内容为:
#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
重启Python解释器,发现编码已被设置为utf8,系统在Python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动加上解决代码,属于一劳永逸的解决方法
8.一些很实用但不常见的操作
9. 打印工作进度-让数据总在一行显示
python2 print '\r%d' % progressNum, # \r可以让每次从一行的头部开始输出,后边加逗号可以强制在一行打印数据
python3 print( '\r%d' % progressNum , end='') # 使用end=''强制在一行打印数据