如何在Python 2.4中生成UUID/GUID,因为缺少UUID模块

2 投票
4 回答
2347 浏览
提问于 2025-04-19 00:39

在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

撰写回答