我是 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 包的不同方法有点困惑。我会尝试逐步回答,但首先你应该清楚包管理器的概念。实际上,包管理器是一个用于从远程存储库安装程序或库(通常称为“packages”)及其自己的先决条件集(也称为需求)的程序。 pacman
和
pip
是两个完全不同的包管理器,因此它们在不同的远程存储库上工作。 yay
是一个从名为 Arch User Repository(或 AUR)的存储库安装软件包的程序,我必须承认我不知道它是一个完全独立的存储库还是与默认的 arch 存储库有些集成。 鉴于这个简短的介绍,我将回答您的问题:
pip
在 Arch Linux 上未禁用:您链接的页面根本没有说明这一点。如果您想使用
pip
,您需要从 Arch Linux 软件包存储库安装软件包 python-pip
(即运行 pacman -S python-pip
)。这将为您提供一个名为 pip
的程序,它是 python 包的包管理器。
yay sanic-cors
,您有效地安装了软件包
sanic-cors
,这也可以从您发布的错误中看出,其中缺少模块 typing_extensions
,而不是 sanic
。这可能是包的错误(包描述中缺少先决条件——即用于创建包的recipe)。 顺便说一句,该模块存在于 Arch Linux 中,可以使用
pacman -S python-typing_extensions
安装。
我使用分发包管理器(即
pacman
apt
(Debian/Ubuntu))来管理整个系统中广泛使用的包(如 numpy
或 matplotlib
)。为了查找 python 包由 Arch 分发,请使用 default Arch repositories搜索栏或 AUR 搜索栏,您可以对以前的存储库使用
pacman -Ss <search query>
或对 AUR 使用 yay -Ss <search query>
来执行相同操作。
我为需要特定包的项目创建一个虚拟环境
pip
。您可以将虚拟环境视为仅在环境内部可用的 python 包的隔离容器。您可以通过获取环境文件 (source environment/bin/activate
) 来进入环境,然后使用
deactivate
bash 函数退出。