Waitress通过pip安装,但是无法执行

Waitress installed via pip, but cannot be executed

总的来说,pip 在我的服务器上运行良好。我刚刚安装了软件包 waitress,安装似乎成功了。我用 pip freeze:

检查了它
$ pip freeze | grep waitress
waitress==2.1.0

女服务员也可以通过python3导入:

>>> import waitress
>>>

但是waitress-serve无法执行:

$ waitress-serve
Command 'waitress-serve' not found, but can be installed with:
apt install python3-waitress
Please ask your administrator.

我不是此服务器上的根用户。这可能是包被部分安装的原因,还是我在这里推测?

因为我没有被授权 运行 apt install 并且因为简单的 pip 安装在我的 virtualenv 中工作,我希望能够在不使用建议 apt install python3-waitress 命令。

如果 waitress 安装在虚拟环境中,我想你可能不小心(或没有)脱离了虚拟环境。

如果你是运行虚拟环境,可以依次尝试以下命令:

source venv/bin/activate #venv is assumed to be the name of the virtual environment you are using. 
pip install waitress
waitress-serve

任何时候你需要使用女服务员,你都需要再次激活虚拟环境:

source venv/bin/activate
waitress-serve

请注意,我假设您 运行 在 Linux 环境中

如果这不是您面临的问题,请随时详细说明您的问题。

编辑:使用 pip 和 运行 安装它在我的 virtualenv 上完美运行;见下图,运行 on python 3.8.10

The conclusion is that, while it is installed both inside and outside virtualenv, it is only actually executable inside it.

当可安装的 Python 软件包为您提供一个实际的入口点时,通常它 不会 在您的路径上。

当您使用虚拟环境时,激活环境会将该环境的各个部分暂时放到路径上。这是为了确保像 pythonpython3 运行 环境的 Python 这样的命令,但它也允许在路径上找到这些入口点。

系统 Python 安装(这里我的意思是,不仅是操作系统附带的 Python,还包括事后手动安装的 not 虚拟环境)默认情况下通常不会在路径上包含其库文件夹 - 仅足以使 pythonpip 工作。 (在 Windows 上,通常甚至这些都没有添加到路径中;相反,一个程序 py 被放置在 Windows 安装文件夹中,它完成寻找 Python 可执行文件。)即使您被允许将东西直接安装到系统中 Python(如果可以避免,您通常不应该这样做,即使您被允许这样做),它们也不会可找到那里。

当然,您可以通过显式指定它们的路径来很好地执行这些操作。但是,通常正确的方法是确保当您想要 运行 程序时,激活安装软件包的虚拟环境。

(在我的系统上,我有一个用于所有项目的主要“沙盒”虚拟环境 - 除非我专门测试安装过程,或者测试代码如何在不同版本的 Python。然后我使用包装脚本打开终端 window,导航到包含我所有项目的文件夹,并激活环境。)