setup.py install running egg_info error: [Errno 13] Permission denied regarless of install directory

setup.py install running egg_info error: [Errno 13] Permission denied regarless of install directory

我遇到了 setup.py 的一个类似 bug 的功能,无论我想在没有 root 权限的情况下安装软件包,我都会收到权限被拒绝的错误。

我有一个玩具 python 包,里面有一些小文件,构建它没有问题。 setup.py 文件中没有什么特别之处。我会列出其中的一两个。

setup (
   name='pmsi',
   entry_points={ 'console_scripts': [ 'pmsi = pmsi.pmsi:main', ] },
)


sudo python3 setup.py install 

给我一点问题都没有。我需要将这个包安装到一个特定的地方,并尝试了 --user、--home、--prefix 选项;在 egg_info 步骤都给了我同样的错误信息。

python3 setup.py install --user
running install
running bdist_egg
running egg_info
error: [Errno 13] Permission denied

似乎安装过程总是试图将 egg_info 复制到我没有写入权限的某个系统位置。我不是 setup.py 方面的专家,必须有一些我可以在命令行或 setup.py 上覆盖的默认规则。或者我应该始终以 root 身份安装到系统位置(这似乎是一个糟糕的选择,如果您想在系统安装之前进行测试怎么办)。

这个特别困难的原因是因为我之前在包目录中 运行 sudo 并且它创建了一些 root 拥有的目录。之后,我 运行 作为普通用户遇到了权限问题。解决方法是所有权变更。

cd ~/lib/python3.8/site-packages
sudo chown -R myuid:mygroup *

经过以上操作,问题解决了。实际 python lib 目录可能因情况而异。