【发布时间】: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