如何在Python 2.4中生成UUID/GUID,因为缺少UUID模块
在Python 2.4中找不到生成UUID的方法,因为这个模块是在Python 2.5中才引入的,并且在2.7中比较稳定。我的电脑是centos5,由于其他依赖关系,不能使用或者升级到Python 2.7。
4 个回答
0
经过一番研究,我发现要在Python 2.4中使用和Python 2.5及以上版本一样的UUID,最好的办法就是从Python的源代码中下载UUID模块。因为这个模块是纯Python代码,所以你可以直接把它放到你的项目里。例如:
wget http://svn.python.org/projects/python/trunk/Lib/uuid.py
Python 2.4.3 (#1, Jan 9 2013, 06:47:03)
>>> import uuid
>>> print uuid.uuid1
<function uuid1 at 0x2b93db1f7758>
>>> print uuid.uuid1()
e95bdba8-652d-11e6-a87a-005056bf0031
1
可以使用这个链接:https://gist.github.com/mahmoudimus/56bcec09b69a2b5165aa
这是一个兼容Python 2.3及以上版本的uuid模块。
示例:
curl -O https://gist.githubusercontent.com/mahmoudimus/56bcec09b69a2b5165aa/raw/b1dd7633fff6ca0cc84a3b1fe435db7c65180dac/uuid.py
使用:
>>> import uuid
>>> uuid.__file__
'uuid.py'
>>> uuid.uuid1()
UUID('520a35d2-308f-11e4-b49f-600308a2f4f0')
>>> uuid.uuid1().hex
'53bcd6be308f11e4b49f600308a2f4f0'
你也可以直接使用这个链接:https://pypi.python.org/pypi/pyuuid/0.0.1
pip install pyuuid
2
Linux内核支持生成UUID。在我的Debian系统上,这个功能可以通过一个叫做/proc
的伪文件系统找到,具体路径是/proc/sys/kernel/random/uuid
:
>>> with open('/proc/sys/kernel/random/uuid') as f:
... print(f.read())
...
1e21ee4f-953e-4179-9bea-ac9a0b9189e7
如果你能安装libuuid
,那么你就可以使用uuidgen
这个命令行工具了:
来自
man uuidgen
uuidgen程序使用libuuid(3)库来创建(并打印)一个新的全球唯一标识符(UUID)。这个新生成的UUID可以认为在本地系统上是唯一的,并且在过去和未来的其他系统生成的UUID中也是唯一的。
sh$ uuidgen
c5f243c6-eb85-4eb9-a20e-97684d4baa1c
3
我用这个方法实现了:
#!/usr/bin/env python
import commands
def uuid():
return commands.getstatusoutput('uuidgen')
if __name__ == "__main__":
print uuid()[1]
它给出了一个很不错的结果,e79a890c-5e3a-4c3a-bfdb-5377389b69ac