基本上对于这种情况,我在Python v2.6中使用_winreg模块,但我必须使用的python包是v2.5。当我尝试使用时:
_winreg.ExpandEnvironmentStrings
它抱怨此模块中没有此属性。我已成功从site-packages文件夹中转移了其他模块,如comtypes。
但问题是我不知道要复制/替换哪些文件。有没有办法做到这一点?也是网站包装第三方模块的主要位置?
答案 0 :(得分:2)
它是一个已编译的C扩展,而不是纯Python,因此您通常不能简单地将DLL / so文件从一个安装复制到另一个安装:Python二进制接口更改0.1版本号更新(但不是0.0.1更新) )。在任何情况下,_winreg似乎在当前的官方Windows版本中静态构建到Python.exe中,而不是被放入“DLLs”文件夹中。
_winreg.ExpandEnvironmentStrings
在2.6之前不可用,但你可以有效地回退到你是对的:Windows下的expandvars的%-syntax仅在2.6中引入,多么无用。看起来你需要以下内容。os.path.expandvars
,它或多或少地做同样的事情。 (它还支持$ VAR变量,在Windows下你可能不需要,但这可能不是一个实际问题。)
如果最坏的情况发生在最坏的情况下,手工编写相当简单:
import re, os
def expandEnvironmentStrings(s):
r= re.compile('%([^%]+)%')
return r.sub(lambda m: os.environ.get(m.group(1), m.group(0)), s)
虽然无论哪种方式都存在Python 2.x无法读取Unicode envvars而无法担心。