【问题标题】:Proper permissions for python packagespython包的适当权限
【发布时间】:2026-02-03 17:00:01
【问题描述】:

我一直在使用 python 包看到这种情况...... python 包安装了额外的文件。在打包的 tar 中,您会得到如下内容:

-rw-r-----  1 schwehr eng     7 Sep  3 18:10 VERSION

为:

https://github.com/scrapy/scrapy/blob/master/scrapy/VERSION

然后,当您以 root 身份将 python setup.py 安装到使用 root 权限的托管环境(例如 MacOSX 的 fink)中时,该文件将由 root 拥有并保留权限。那么以用户身份运行的代码就无法访问这个文件了。

这个项目和其他有相同问题的项目(通常是安装的鸡蛋部分)使用 python setup.py sdist upload。

这些项目应该如何构建一个具有适当权限的 tar,以便所有文件都是世界可读的?例如

wget https://pypi.python.org/packages/source/S/Scrapy/Scrapy-0.18.2.tar.gz#md5=14f105e2fdb047c666b944990e691389

tar tfvv Scrapy-0.18.2.tar.gz  | head
drwx------ buildbot/buildbot 0 2013-09-03 10:30 Scrapy-0.18.2/
-rw------- buildbot/buildbot 385 2013-09-03 10:27 Scrapy-0.18.2/MANIFEST.in
-rw------- buildbot/buildbot 140 2013-09-03 10:30 Scrapy-0.18.2/setup.cfg
drwx------ buildbot/buildbot   0 2013-09-03 10:30 Scrapy-0.18.2/bin/
-rw------- buildbot/buildbot 114 2013-09-03 10:27 Scrapy-0.18.2/bin/runtests.bat
-rwx------ buildbot/buildbot 1271 2013-09-03 10:27 Scrapy-0.18.2/bin/runtests.sh
-rwx------ buildbot/buildbot   68 2013-09-03 10:27 Scrapy-0.18.2/bin/scrapy
drwx------ buildbot/buildbot    0 2013-09-03 10:30 Scrapy-0.18.2/scrapy/
-rw------- buildbot/buildbot 2785 2013-09-03 10:27 Scrapy-0.18.2/scrapy/telnet.py
drwx------ buildbot/buildbot    0 2013-09-03 10:30 Scrapy-0.18.2/scrapy/commands/

另见:https://github.com/scrapy/scrapy/issues/377

【问题讨论】:

    标签: python packaging setuptools software-distribution


    【解决方案1】:

    当使用限制性 umask 生成 sdist tarball 或在没有其他人/没有人读取/执行权限的情况下创建文件时会发生这种情况。

    一个简单的解决方法是在 tar'ing 之前破坏 umask 位和 chmod 文件

    umask 0022 && chmod -R a+rX . && python setup.py sdist upload
    

    【讨论】: