Python设置细节
Windows下python环境变量配置
默认情况下,在 windows 下安装 python 之后,系统并不会自动添加相应的环境变量。此时不能在命令行直接使用 python 命令。
1. 首先需要在系统中注册 python 环境变量:假设 python 的安装路径为 c:\python2.6,则修改我的电脑->属性->高级->环境变量->系统变量中的 PATH 为:
(为了在命令行模式下运行 Python 命令,需要将 python.exe 所在的目录附加到 PATH 这个环境变量中。)
PATH=PATH;c:\python26
上述环境变量设置成功之后,就可以在命令行直接使用 python 命令。或执行 "python *.py" 运行 python 脚本了。
2. 此时,还是只能通过 "python *.py" 运行 python 脚本,若希望直接运行 *.py,只需再修改另一个环境变量 PATHEXT:
PATHEXT=PATHEXT;.PY;.PYM
3. 另外,在使用 python 的过程中,可能需要经常查看某个命令的帮助文档,如使用 help('print') 查看 print 命令的使用说明。默认安装的 python 无法查看帮助文档,尚需进行简单的配置:
在 python 安装目录下,找到 python25.chm,使用
hh -decompile .python26.chm
将其反编译出来,然后将其所在的目录加入到上面提到的 PATH 环境变量中即可。
4. 如何使 Python 解释器能直接 import 默认安装路径以外的第三方模块?
为了能 import 默认安装路径以外的第三方的模块(如自己写的模块),需要新建 PYTHONPATH 环境变量,值为这个模块所在的目录。
Python 设置系统默认编码
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
python没办法处理非 ascii 编码的,此时需要自己设置将 python 的默认编码,一般设置为 utf8 的编码格式。
查询系统默认编码可以在解释器中输入以下命令:
>>>sys.getdefaultencoding()
设置默认编码时使用:
>>>sys.setdefaultencoding('utf8')
可能会报
AttributeError: 'module' object has no attribute 'setdefaultencoding'
的错误,执行 reload(sys),在执行以上命令就可以顺利通过。
此时在执行 sys.getdefaultencoding() 就会发现编码已经被设置为 utf8 的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的 ascii 了,那么有没有办法一次性修改程序或系统的默认编码呢。
有 2 种方法设置 python 的默认编码:
一个解决的方案在程序中加入以下代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
另一个方案是在 python 的 Lib\site-packages 文件夹下新建一个 sitecustomize.py,内容为:
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时重启 python 解释器,执行 sys.getdefaultencoding(),发现编码已经被设置为 utf8 的了,多次重启之后,效果相同,这是因为系统在 python 启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
另外有一种解决方案是在程序中所有涉及到编码的地方,强制编码为 utf8,即添加代码 encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告,我曾经遇到这种情况,错误日志压缩之后尚有 70 多 K,全都是这一个问题,让人有很崩溃的感觉。
python的 urllib 里面设置超时信息
由于 python 的 urllib 里面没有直接设置超时的方法,因此需要设置 python 的 socket 超时信息
所以:
import socket
import urllib
socket.setdefaulttimeout(9.0)
try:
content = urllib.urlopen(url).read()
exception socket.timeout:
pass
这样在 urllib 打开网页超时以后会抛出一个 socket.timeout 的异常,只需把这个异常 catch 出来处理就可以了。
Windows 7 为 python 设置全局路径
- 从“开始”菜单选择“电脑”
- 从上下文菜单选择“系统属性”
- 单击“高级系统设置 > 高级”选项卡
- 单击“环境变量”,然后在“系统变量”下找到 PATH 并单击。
- 在“编辑”窗口中,通过将类的位置添加到 PATH 的值来修改 PATH。如果没有项 PATH,可以选择添加新变量,然后添加 PATH 作为名称,添加 python(python.exe)安装位置作为值。例如安装在 D:\python2.7
- 再次打开“命令”提示窗口,然后运行 python。