Windows 7/Vista下easy_install的.egg权限问题
我在Windows 7的虚拟环境中使用easy_install来安装Python包。因为有UAC(用户账户控制),我必须以管理员身份运行CMD来安装包。这就出现了问题,我发现从普通用户账户无法导入这个包。
>>> import tempita
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named tempita
但是tempita-0.4-py2.6这个包明明就在site-package文件夹里。而且以管理员身份运行Python时,导入是可以正常工作的。这就是权限的问题。很奇怪,我不知道为什么,只有.egg文件的权限设置是有限制的。我找到了一篇关于这个问题的文章:
改变父文件夹的拥有者或权限并没有用,我知道的唯一解决办法就是一个一个地修改这些.egg文件的权限。这真的很烦人,为什么easy_install只对.egg文件设置这么严格的权限,而不是.py文件呢?我该如何在不关闭UAC或不以超级用户身份运行的情况下解决这个问题呢?
2 个回答
0
你可以试试用 ICACLS 来重置文件的权限。
ICACLS c:\Python26\lib\site-packages\*.egg /reset
我建议你先对一个文件试试看,再去用 *.egg
。要注意的是,*.egg
可能也会匹配到以 egg 开头的文件夹。
0
我开始用 distribute 来代替 setuptools,因为 distribute 团队在解决问题方面做得更积极。奇怪的是,在我的 Windows 7 系统上,distribute 似乎不再创建 zip 格式的包了,这可能和你遇到的权限问题有关。换用 distribute 可能对你有帮助,虽然我能理解这听起来更像是个临时解决办法,而不是根本的解决方案。