首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务生通过pip安装,但不能执行

服务生通过pip安装,但不能执行
EN

Stack Overflow用户
提问于 2022-03-11 20:51:36
回答 2查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
$ pip freeze | grep waitress
waitress==2.1.0

服务生也可以通过python3导入:

代码语言:javascript
复制
>>> import waitress
>>>

但是,不能执行waitress-serve

代码语言:javascript
复制
$ waitress-serve
Command 'waitress-serve' not found, but can be installed with:
apt install python3-waitress
Please ask your administrator.

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

由于我没有被授权运行apt install,而且简单的pip安装在我的虚拟环境中工作,所以我希望能够在不使用建议的apt install python3-waitress命令的情况下让它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-11 21:15:55

的结论是,虽然它安装在虚拟主机内部和外部,但实际上只能在其内部执行。

当可安装的Python包给您一个实际的入口点时,通常它不会出现在您的路径上。

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2022-03-11 21:01:34

如果waitress安装在虚拟环境中,我认为您可能是意外(或不)从上述虚拟环境中退出的。

如果您正在运行虚拟环境,您可以一个接一个地尝试以下命令:

代码语言:javascript
复制
source venv/bin/activate #venv is assumed to be the name of the virtual environment you are using. 
pip install waitress
waitress-serve

每当您需要使用服务员时,您都需要再次激活虚拟环境:

代码语言:javascript
复制
source venv/bin/activate
waitress-serve

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

如果这不是你所面临的问题,那就可以在你的问题上多解释一点。

编辑:使用pip安装并在我的虚拟服务器上运行它,见下图,运行于python 3.8.10

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71444507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档