【问题标题】:setup.py install running egg_info error: [Errno 13] Permission denied regarless of install directorysetup.py install running egg_info 错误:[Errno 13] Permission denied 不管安装目录
【发布时间】:2020-01-07 00:04:20
【问题描述】:

我遇到了 setup.py 的一个类似错误的功能,无论我想在没有 root 权限的情况下安装包的位置,我都会收到 Permission denied 错误。

我有一个玩具 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 的目录。然后我以普通用户身份运行,我遇到了权限问题。在 sudo chown -R myuid:myuse * 之后,问题得到了解决。我在错误的方向思考了将近一个小时。
  • 您还可以使用--prefix 在特定目录中安装模块(例如python3 setup.py install --prefix=/path/to/install)。
  • 感谢您指出前缀选项。也试过了。我被自己的错误误导了。大多数时候,程序员的问题是由我们认为的以外的东西引起的。我非常仔细地阅读了 setup.py 文档一个多小时。有点像买票去交通学校。一些惩罚和一点好处。
  • @KeminZhou sudo chown -R myuid:myuse *是在哪个目录运行的?
  • @CameronHudson 类似:~/lib/python3.8/site-packages。您可以随时尝试使用 find 查找包:find $HOME "your code file name"

标签: python python-3.x pip setup.py


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 2018-08-15
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多