setup.py install 运行 Egg_info 错误:[Errno 13] 权限被拒绝,无论安装目录如何

Kem*_*hou 7 python pip setup.py python-3.x

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

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

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


sudo python3 setup.py install 
Run Code Online (Sandbox Code Playgroud)

给我一点问题都没有。我需要将此软件包安装到特定位置并尝试过 --user、--home、--prefix 选项;在 Egg_info 步骤中都给了我相同的错误消息。

python3 setup.py install --user
running install
running bdist_egg
running egg_info
error: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

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

Kem*_*hou 9

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

cd ~/lib/python3.8/site-packages
sudo chown -R myuid:mygroup *
Run Code Online (Sandbox Code Playgroud)

经过上述操作后,问题得到解决。对于不同的情况,实际的 python lib 目录可能会有所不同。