3

我用 setup.py 创建了一个 python 包安装,我希望它在文件夹中复制一个数据文件(为这个场合创建)~/.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
4

2 回答 2

4

我认为根本不向安装程序的主目录写入任何配置文件会更好,也更习惯。其他用户呢?最好在初始化时检查您的代码,如果该文件对于运行它的用户存在,并且如果不存在则仅添加一个新文件。

于 2010-12-29T09:43:26.313 回答
0

对我来说,您正在寻找 chown(更改所有者)或 chgrp(更改组)。

此外,我不明白您为什么要制作 sudo,您只需要正确访问这些文件即可。因此,只需添加chmod -R gou+rx setup_dir以便能够浏览安装。

于 2010-12-29T08:57:10.467 回答