如何在python setup.py中修改文件权限?
我创建了一个Python包,并写了一个setup.py文件,想把一个数据文件复制到一个专门创建的文件夹~/.did里。问题是,我必须用sudo权限来运行setup.py,因为它要写入/usr/local/... 所以当我的数据文件被复制到~/.did时,只有root用户可以对这个文件进行写入。
于是我决定在setup()函数之后加一个os.chmod()的调用,但我想知道有没有人有更好的方法来做到这一点。
这是我的setup.py文件:
#!/usr/bin/env python
from distutils.core import setup
import os
home=os.path.expanduser('~')
setup(name='did',
version='1.0',
description='Daily Image Downloader',
author='Luc Mazon',
author_email='my@mail.com',
url='',
license='GNU GPL v3',
scripts=['did'],
packages=['didlib'],
data_files=[
('/usr/share/man/man1', ['doc/did.1.gz']),
(home+'/.did', ['did.xml'])
]
)
os.chmod(home+'/.did/did.xml', 0666)
因为did.xml不是一个Python文件,所以我还创建了一个MANIFEST.in文件,里面有以下一行:
include did.xml
我的包的整体结构如下:
did-1.0
| didlib
| | __init__.py
| | variouspyfiles.py
| doc
| |-did.1.gz
| MANIFEST.in
| did.xml
| did
| setup.py
2 个回答
0
对我来说,你要么是在找 chown(更改文件的拥有者),要么是在找 chgrp(更改文件的所属组)。
而且我不明白你为什么要用 sudo,你只需要对那些文件有正确的访问权限。
所以只需添加 chmod -R gou+rx setup_dir
,这样就可以浏览安装的内容了。
4
我觉得更好,也更符合常规做法的是,不要在安装程序的主目录下写任何配置文件。那其他用户怎么办呢?更好的做法是在程序启动时检查一下,运行程序的用户是否已经有这个文件,如果没有再新建一个。