如何突破 debian12 对于系统的 pip 安装第三方包的限制?-灵析社区

momo

如何突破 debian12 对于系统的 pip 安装第三方包的限制? 我先使用 apt install python3-pip 安装了一个 pip,然后想使用 pip install idocker 安装 idocker 工具。但是被禁止了 ops@es-mq-20280228:~/opt/rabbitmq$ pip3 install idocker error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.11/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification. 但是 apt 仓库还没有收录 idocker ops@es-mq-20280228:~/opt/rabbitmq$ sudo apt install idocker Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package idocker 怎么办? * * * 使用 sudo apt install python3-xxx 的方式不行,因为 xxx 不许被 debian 的 apt 收录才行,我要的 [idocker](https://link.segmentfault.com/?enc=e0aUnTrAM9Yj86KvEATi1Q%3D%3D.wvQTrF1vrkx9ePHIsaEpPg1QsF1k5U8WN5F0cp%2BeNw%2FmMU4hxyJ6q1phpCBLwlCXj%2B4dXwVGpEbp5uUYYnWAHw%3D%3D) 是我自己写的上传到了 pypi ([https://pypi.org/project/idocker/1.4.0/#description](https://link.segmentfault.com/?enc=X5kLdjGhd02TLVCCYSmjYw%3D%3D.kYlRJIUqIhf0LgZEf7VNwbusQf1Ex5BrYSfY0vk9JFfPLGUG7XunwOO8GL5lX36wM54ANK%2F8cWBDdBs1I%2BXA8g%3D%3D)),并不是很出名,所以并没有 debian 的 apt 收录 ╭─pon@wechat-console ~ ╰─➤ sudo apt install python3-idocker 1 ↵ [sudo] pon 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 E: 无法定位软件包 python3-idocker * * * 也不想使用虚拟环境,因为这些使用这些命令之前,还需要激活虚拟环境,这太麻烦了 * * * 至于 debian 推荐的是用 pipx 来安装,我就不懂了,既然 pipx 可以,为什么还要限制 pip 不行呢? * * * 不过这个 pipx 确实可以 先安装 pipx sudo apt install pipx 然后再安装需要的第三方包 ╰─➤ pipx install idocker installed package idocker 1.4.0, installed using Python 3.11.2 These apps are now globally available - idocker done! ✨ 🌟 ✨

阅读量:182

点赞量:0

问AI
看了一下 pipx,使用 pipx 每安装一个包,都会先创建一个独立的虚拟环境,然后把包脚本的 python 解析器指向对应的虚拟环境 python 比如我安装的 idocker 先使用 pipx 安装 idocker ─➤ pipx install idocker installed package idocker 1.4.0, installed using Python 3.11.2 These apps are now globally available - idocker done! ✨ 🌟 ✨ 使用 zsh 的 where 命令查看刚刚的 idocker 的启动路径 ╭─pon@wechat-console ~ ╰─➤ where idocker /home/pon/.local/bin/idocker 查看 "/home/pon/.local/bin/idocker" 的内容 ╭─pon@wechat-console ~ ╰─➤ cat /home/pon/.local/bin/idocker #!/home/pon/.local/pipx/venvs/idocker/bin/python # -*- coding: utf-8 -*- import re import sys from idocker.cli.main import cli if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(cli()) 可以看到,这个脚本指向了 "/home/pon/.local/pipx/venvs/idocker/bin/python" 如果我在安装一个 glances ➤ pipx install glances 1 ↵ ⚠️ Note: glances was already on your PATH at /usr/bin/glances installed package glances 3.4.0.3, installed using Python 3.11.2 These apps are now globally available - glances done! ✨ 🌟 ✨ ╰─➤ where glances /home/pon/.local/bin/glances /usr/bin/glances /bin/glances ─➤ cat /home/pon/.local/bin/glances #!/home/pon/.local/pipx/venvs/glances/bin/python # -*- coding: utf-8 -*- import re import sys from glances import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main()) 可以看到,glances 也有了一个新的独立的虚拟环境 看看 pipx list 会显示什么 ─➤ pipx list venvs are in /home/pon/.local/pipx/venvs apps are exposed on your $PATH at /home/pon/.local/bin package glances 3.4.0.3, installed using Python 3.11.2 - glances package idocker 1.4.0, installed using Python 3.11.2 - idocker 可以看到,pipx list 不是 list 安装的包,而是 list 每次安装的包和对于的虚拟环境 *** 所以,如 debian12 建议的那样,使用 pipx 确实是一个优雅的方案,简单便捷优雅