py2exe打包BeautifulSoup遇到问题及解决
今天用py2exe打包一个小程序,但是怎么都不能够找到BeautifulSoup模块,经过Google得知,py2exe无法读取压缩的egg文件,解决方法重新用解压方法安装BeautifulSoup,同时发现pip比easy_install要更方便,于是安装了pip。OK,打包成功,大功告成。
今天用py2exe打包一个小程序,但是怎么都不能够找到BeautifulSoup模块,经过Google得知,py2exe无法读取压缩的egg文件,解决方法重新用解压方法安装BeautifulSoup,同时发现pip比easy_install要更方便,于是安装了pip。OK,打包成功,大功告成。
ISBN是图书的一个国际通用编号,详细信息可参考维基百科中的词条:http://zh.wikipedia.org/wiki/ISBN。
ISBN在07年前使用的是10位编号,07年后并入国际货品编号,升级为13位,以下为将10位编号转换为13位编号的Python代码:
def isbn10to13(isbn):
if len(isbn) != 10:
return None
isbn = "978"+isbn[:-1]
sum = 0
for i, b in enumerate(isbn):
sum += (1 if i % 2 == 0 else 3) * int(b)
return "%s%d" % (isbn, (10 - sum % 10) % 10)
输入内容为10位的ISBN号去除连接符“-”的字符串,输出内容为13位的ISBN号去除连接符“-”的字符串。主要的工作在于计算出最后一位的校验码。
Redis是一个Key-Value数据库,优点是简单,高效,稳定;缺点是所有数据存放于内存(会定期dump到磁盘),当然内存小时可以配置虚拟内存,不过性能会有所下降。 官方只提供源代码下载,并且不支持Windows,可从第三方下载Windows下的预编译文件,下载地址:
https://github.com/dmajkic/redis/downloads
解压后,所有命令均在一个目录下,服务器端直接运行redis-server.exe即可,如果需要特殊配置,可以指定配置文件或者使用redis-client进行配置。配置文件其实就是配置命令的一个集合。redis的配置命令(2.2之后)可以做到在不重启服务的情况下生效,包括redis版本更新,slave转为master等等。
Redis的Python接口目前比较成熟的是redis-py,项目地址为https://github.com/andymccurdy/redis-py,通过git可将源码下载到本地,git的安装和使用请参考[《Git使用123》](http://www.lunny.info/html/2011/01/24/625330.html)。
git clone https://github.com/andymccurdy/redis-py.git
cd redis-py
python setup install
redis-py的使用请参考https://github.com/andymccurdy/redis-py。
有些时候,我们需要通过python来执行SQL文件,那么这个函数就有用武之地了。调用之前确保安装了mysql。Linux和Windows应该是都可以用的,Linux下没有测试过。
from subprocess import Popen, PIPE
def excSQLFile(host, db, user, passwd, charset, filename):
process = Popen('mysql -h%s -D%s -u%s -p%s --default-character-set=%s' \
% (host, db, user, passwd, charset),
stdout=PIPE, stdin=PIPE, shell=True)
output = process.communicate('source ' + filename)[0]
return output
今日遇到一则错误,tornado服务器在解析文件的mime类型时报错,无法获取,错误如下。
codeUnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0
出错误原因: Windows注册表中保存的mime类型对应项中包含非ascii字符
解决方法:
执行regedit,找到
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Content Type
在其中找到非英文字母的mime类型,例如我遇到的“视频/x-m4v”,删除即可。
如何避免: 有些程序在安装时会新增一些mime类型,如果胡乱加,那么肯定就会出问题。我遇到的这个问题,估计是哪个视频播放软件犯了一个低级错误,不该翻译的地方翻译了。这个错误一般情况下不会有什么危害,真正除了问题却有可能摸不着头脑。
附: mime类型标准的网址:http://www.iana.org/assignments/media-types/。访问可以看到,顶级类型里不包含“视频”,只有“vedio”。