本来想写一个可以编码解码BASE64的小脚本,结果出了个问题,使用base64.b64encoding(str)的时候,总提示模块中没有这个方法,于是dir(base64),发现只有寥寥几个方法,根本没有编码和解码的方法。

文件如下:

import sys
import base64
import getopt

opts, args = getopt.getopt(sys.argv[1:], "d:e:")

for op, value in opts:
    if op == "-d":
        # decode the input string
        print base64.b64decode(value)
    if op == "-e":
        # encode the input string
        print base64.b64encode(value)

很简单的一个脚本。感觉是import的时候出问题了。

先去查了一下import的顺序,是从sys.path进行import的。打印出来这个路径,进去找了找。
之后进行python -vv,之后import,看看python在import base64的时候都import了哪些文件。发现在lib目录下import了一个base64.py。
然后突然发现我这个脚本的文件名也叫base64.py,它应该是把自己import进去了,并没有import真正的模块,于是把自己改个名字再运行,一切正常。