1.python的導入路徑問題
https://laike9m.com/blog/pythonxiang-dui-dao-ru-ji-zhi-xiang-jie,60/ ?這篇文章已經(jīng)說的很詳細了群井,這里主要是自己的理解和解決辦法
在實用python命令運行文件a.py的時候,這個時候python是將a.py文件所在的文件夾當成了top—level毫胜,也就是頂層目錄书斜,如果要引用上一層的文件,比如是用from ..Utils import util 這樣是不行的指蚁,因為這時候在python看來是沒有上一層的菩佑,所以..對python來說是沒有用的自晰。
故 程序入口文件只能使用絕對路徑導入
問題又來了凝化,使用絕對路徑導入的時候,python會從sys.path中掃描你要導入的包酬荞,在本地開發(fā)的時候搓劫,直接運行的時候本地項目的根目錄是默認加在sys.path中的,所以使用from superPackage.package import util是可行的混巧,但是在服務器linux上運行的時候枪向,項目路徑并沒有在sys.path中,如何把項目的跟目錄加到sys.path中讓服務器環(huán)境變的跟本地環(huán)境一樣呢咧党?有很多種辦法秘蛔,可以使用sys.path.append方法,可以在site-packages 文件中創(chuàng)建 .pth文件傍衡,將模塊的路徑寫進去深员,一行一個路徑,當然最好的辦法是加一個PYTHONPATH環(huán)境變量蛙埂,在這個環(huán)境變量中輸入相關的路徑倦畅,不同的路徑之間用逗號(英文的)分開,如果PYTHONPATH 變量不存在绣的,可以創(chuàng)建它叠赐。
2.pip安裝的時候使用阿里云的鏡像
在~/.pip/ 目錄下創(chuàng)建pip.conf文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%\pip\pip.ini)屡江,文件格式為UTF8無BOM格式芭概,沒有該文件夾就創(chuàng)建一個,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罢洲,
? ? ? ? 解壓,進入解壓后的文件夾宏怔,執(zhí)行
? ? ? ? ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
? ? ? ? make
? ? ? ? make install
? ? ? ?在/usr/local/freetds/bin里執(zhí)行tsql -H ip -U username -P password 測試連接
step 2:配置環(huán)境變量【非常重要】奏路,在/etc/profile最后添加以下代碼并執(zhí)行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 ?執(zhí)行命令
5.python2.x兼容python3.x
6.使用timeit測試程序運行速度鸽粉,這是目測最好用的一種辦法
import ?timeit
times = timeit.Timer(lambda: test()).timeit(10) ? ?# test()為要測試的函數(shù)斜脂,10表示重復的次數(shù)
print(times)
7. python2.x中文編碼問題解決
方法一:在程序文件中以下三句??????????????
import sys??????????????
reload(sys)??????????????
sys.setdefaultencoding('utf8')? ? ? ? ? ? ?
方法二:修改Python本環(huán)境(推薦)?????????
在Python的Lib\site-packages文件夾下新建一個sitecustomize.py文件,
內容為:????????????
?#coding=utf8?????????????
import sys?????????????
reload(sys)?????????????
sys.setdefaultencoding('utf8')??????
重啟Python解釋器触机,發(fā)現(xiàn)編碼已被設置為utf8帚戳,系統(tǒng)在Python啟動的時候,自行調用該文件儡首,設置系統(tǒng)的默認編碼片任,而不需要每次都手動加上解決代碼,屬于一勞永逸的解決方法
8.一些很實用但不常見的操作
9. 打印工作進度-讓數(shù)據(jù)總在一行顯示
python2? ? print '\r%d' % progressNum,? ? ?# \r可以讓每次從一行的頭部開始輸出产场,后邊加逗號可以強制在一行打印數(shù)據(jù)
python3? ? print( '\r%d' % progressNum , end='')? # 使用end=''強制在一行打印數(shù)據(jù)