![pip install --user 表示用户无法从 Dash 或终端运行应用程序](https://linux22.com/image/1087021/pip%20install%20--user%20%E8%A1%A8%E7%A4%BA%E7%94%A8%E6%88%B7%E6%97%A0%E6%B3%95%E4%BB%8E%20Dash%20%E6%88%96%E7%BB%88%E7%AB%AF%E8%BF%90%E8%A1%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我是一个 Python GUI 应用程序的开发人员。我希望我的应用程序的用户能够使用 pip 安装该应用程序,因为并非所有依赖项都已安装到 Debian 中,而且我预计这种情况短期内不会改变。
当然,PPA 是个好主意,但对我而言,这意味着从头开始为不是我自己的 Python 包创建 Debian 包,并且涉及我肯定不擅长的东西,例如 SWIG。
PPA 的下一个最佳替代方案是 Python 的 pip。而且它效果很好!所有最好的建议都说--user
在运行时使用该选项pip install
。pip 开发人员这么说,我的印象是 Ubuntu 实际上默认使用这个。
--user
但是在 Ubuntu 上使用时我发现两个问题pip
:
- 应用程序可执行文件正在安装到
~/.local/bin
,与 Fedora 和其他一些发行版不同,它不在 Ubuntu 的默认路径上。(setup.py 使用 setuptools 的entry_points
)。 - 由于某些无法解释的原因,即使
.desktop
文件位于 中~/.local/share/applications
,应用程序也不会显示在 Dash 中,即使在注销后也是如此。不幸的是,~/.local/share/man/man1
当用户从终端运行 man 时,安装到 的手册页也不会出现。
我可以要求 Ubuntu 用户创建一个~/bin
目录并向我的应用程序添加符号链接~/.local/bin
,但这并不能解决手册页的问题,也不能解决无法从 Dash 启动应用程序的问题。
我该如何建议我的用户最好地解决这些问题?
我建议用户安装的具体命令是python3 -m pip install --user foo-1.0.tar.gz
答案1
在 IRC 上与 Ubuntu 开发人员交谈后,我现在的理解是,Ubuntu 遵循 Debian 的做法,如果文件夹存在,它会将 ~/bin 添加到 PATH 中。目前没有计划对 ~/.local/bin 执行相同操作。因此,最终用户必须手动调整其路径,或添加符号链接等。作为一名应用程序开发人员,我想我需要一个针对 Ubuntu 和 Debian 用户的特殊安装脚本来执行其中的一些操作,这真是太可惜了,因为我确信这也会影响到其他所有依赖 pip 的 Python 应用程序开发人员。