从终端调用时 uvicorn 不工作

uvicorn is not working when called from the terminal

我尝试通过有效的 pip3 在系统上安装 uvicorn,但是我无法从命令行 运行 进行同样的操作。关于如何解决这个问题的任何指示?

Requirement already satisfied: uvicorn in /home/vhawk19/.local/lib/python3.7/site-packages (0.10.8)
Requirement already satisfied: uvloop>=0.14.0; sys_platform != "win32" and sys_platform != "cygwin" and platform_py
thon_implementation != "pypy" in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (0.14.0)
Requirement already satisfied: websockets==8.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn)
(8.1)
Requirement already satisfied: click==7.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (7.0
)
Requirement already satisfied: h11==0.8.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (0.8
.1)
Requirement already satisfied: httptools==0.0.13; sys_platform != "win32" and sys_platform != "cygwin" and platform
_python_implementation != "pypy" in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (0.0.13)
vhawk19@api-server:~/api-server$ uvicorn
-bash: uvicorn: command not found```

看起来你的 bin 目录不在 $PATH 上。

直接执行:

/home/vhawk19/.local/bin/unvicorn

或者先添加到路径:

export PATH=$PATH:$HOME/.local/bin

您可以将其放入您的 shell rc 文件中。

检查您的 PATH 环境变量。它也应该包括 unicorn 包的路径。

不确定 linux 路径,但在 windows 中,您需要在 Path 环境变量中包含这两个路径。

D:\Programme\Python\Python37
D:\Programme\Python\Python37\Scripts

创建新的虚拟环境后,如果你得到 要求已满足

通过执行以下命令强制卸载所有软件包: 点冻结 > requirements.txt

pip uninstall -r requirements.txt -y

现在检查包使用: 点列表

如果 uvicorn 存在于 requirements.txt,命令如 uvicorn app.main:app --reload 会工作。

如果不安装 uvicorn 使用 pip 安装 uvicorn

& 然后尝试执行 uvicorn app.main:app --reload

现在你应该可以找到No packages,或者一些默认的包比如pip, wheel等等

根据要求重新安装所有软件包: pip install -r requirements.txt

您可以直接从 cmd 使用下面的命令。该路径适合我的情况,但我仍然在使用 uvicorn 命令时遇到错误。

python -m uvicorn 

我运行遇到了同样的问题。 我正在使用 pyenv-win 来管理 Python 个版本。

以下命令成功解决了问题

$ pyenv rehash

1.First知道uvicorn所在的位置。你可以通过输入命令

知道这一点
$locate uvicorn

现在,select看起来像

的路径
/home/username/.local/bin/uvicorn 

2.Then,键入命令

$ls -a          

在这里,您可以看到一个名为.bashrc和.bash_profile的隐藏文件。现在,我们必须在 .bashrc 文件或 .bash_profile 中添加我们的 uvicorn 路径。为此,我们使用 nano 文本编辑器并在 .bashrc 中写入以下内容并保存

$nano .bashrc

export PATH:$PATH:/home/username/.local/bin

我最近安装了 fastapi、uvicorn 并尝试 运行

uvicorn main:app --reload

我正在使用 zsh(shell 类型无关紧要)和 pyenv 用于虚拟环境

遇到同样的麻烦(zsh:未找到 uvicorn 命令)

对我有用的解决方案

python -m uvicorn main:app --reload

为什么有效

这是因为当我们安装 uvicorn 时,它会安装一些系统二进制文件,我们可能必须将这些二进制文件添加到终端才能捕获的路径中

否则,我们需要通过python

让终端知道二进制文件

此问题的一个非常常见的原因是 uvicorn 服务器不是 运行 来自 root。执行以下步骤来解决此问题:

  1. 使用命令以 root 用户身份登录:

sudo -i

  1. 导航到您的虚拟环境位置并激活它
  2. 现在重启 uvicorn 服务器

sudo pip installpip install 可能在两个不同的位置。