如何在Arch Linux上安装一些罕见的Python包?

问题描述 投票:0回答:1

我是 Arch Linux 的初学者,我想在我的 Python 项目中使用 Sanic。从包管理中,我了解到pip在Arch Linux上已被禁用,因此我尝试使用

pacman -S python-sanic
命令并成功安装了Sanic。

Bud当我想安装sanic-cors时,我遇到了一个问题:我应该使用哪个名称,

python-sanic-cors
还是
python-sanic_cors

我尝试了这两个,但吃豆人找不到它们。我删除了

python-
,但没有用。

最后我用了

yay sanic-cors
,成功了。

但是,我不确定这个安装方法是否准确,或者我是否真正安装了Python的sanic-cors包。

当我运行代码时:

# api.py
from sanic import Sanic, json
from sanic_cors import CORS

app = Sanic("ip")
CORS(app)


@app.route("/get_proxy")
async def ip_api(request):
    ip = "XXXXXX"
    return json({"ip": ip})


def start_server():
    app.run(host="127.0.0.1", port=5050)


if __name__ == '__main__':
    start_server()

PyCharm 报错:

Traceback (most recent call last):
  File "/home/jebhim/PycharmProjects/MyProject/api.py", line 2, in <module>
    from sanic import Sanic, json
  File "/usr/lib/python3.12/site-packages/sanic/__init__.py", line 3, in <module>
    from typing_extensions import TypeAlias
ModuleNotFoundError: No module named 'typing_extensions'

无论我使用什么 pacman 或 yay 命令,我都无法安装这个缺失的模块。

总而言之,我想知道如何准确安装Python包?我应该使用 pip、pacman 还是 yay?

如果我应该使用 Pacman,我应该如何正确地将 Python 包的名称转换为安装时的 AUR 包名称?是否需要添加

python-
前缀?如果我不添加它,我最终会下载一些奇怪的软件包吗?

如果您需要的话,这里有关于我的操作系统和Python相关信息的详细信息。

Arch linux:
OS: Arch Linux x86_64
Kernel: 6.11.4-arch1-1
Shell: bash 5.2.37
DE: Plasma 6.2.1 

Python:
Python 3.12.7
python-3.x pip archlinux pacman-package-manager
1个回答
0
投票

您似乎对安装 python 包的不同方法有点困惑。我会尝试逐步回答,但首先你应该清楚包管理器的概念。实际上,包管理器是一个用于从远程存储库安装程序或库(通常称为“packages”)及其自己的先决条件集(也称为需求)的程序。 pacman

pip
是两个完全不同的包管理器,因此它们在不同的远程存储库上工作。
yay
是一个从名为
Arch User Repository
(或 AUR)的存储库安装软件包的程序,我必须承认我不知道它是一个完全独立的存储库还是与默认的 arch 存储库有些集成。 鉴于这个简短的介绍,我将回答您的问题:

  1. pip

    在 Arch Linux 上未禁用:您链接的页面根本没有说明这一点。如果您想使用

    pip
    ,您需要从 Arch Linux 软件包存储库安装软件包
    python-pip
    (即运行
    pacman -S python-pip
    )。这将为您提供一个名为
    pip
    的程序,它是 python 包的包管理器。
    
    

  2. 通过运行
  3. yay sanic-cors

    ,您有效地安装了软件包

    sanic-cors
    ,这也可以从您发布的错误中看出,其中缺少模块
    typing_extensions
    ,而不是
    sanic
    。这可能是包的错误(包描述中缺少先决条件——即用于创建包的
    recipe
    )。 顺便说一句,该模块存在于 Arch Linux 中,可以使用 pacman -S python-typing_extensions 安装。
    
    

  4. 现在,我安装的 python 包通常遵循以下规则:

我使用分发包管理器(即
© www.soinside.com 2019 - 2024. All rights reserved.