【发布时间】:2021-12-10 05:11:45
【问题描述】:
我无法理解 Python 的包管理和虚拟环境。 到目前为止,我设法在 cmd 行并使用 PyCharm 创建了虚拟环境。
但在实际与他们合作时我仍然感到困惑:
当我在激活 (venv) 以查找包后在项目根文件夹中使用 pip search yaml 时,我收到以下消息:
ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be
deprecated in the near future. See https://status.python.org/ for more information.
而且我无法解释我在提到的网站上获得的信息。 现在的问题是如何使用 pip 搜索 Python 包? 如果 pip 不起作用,应该使用哪个工具? 我希望得到这样的信息,而不是错误或提到的网站上提供的信息。 pip 本身并没有在其文档中提及其他一些 API。
我使用的应用程序导入了一个名为“yaml”的包。当我尝试搜索此类包(使用 PyCharm)时,我收到如下消息:
ERROR: Could not find a version that satisfies the requirement yaml (from versions: none)
ERROR: No matching distribution found for yaml
但是为什么我可以在 PyCharm (Settings/Project/Python Interpreter) 中查找这样的包?
该应用使用的另一个 Python 库是 PIL。与 yaml 相同的问题。我可以使用 PyCharm 查找包,它显示一个包信息横幅,谈论 Python 图像库,版本 1.1.6,但是当我想安装它时,PyCharm 告诉我没有这样的库:
ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)
ERROR: No matching distribution found for PIL
我查看了 PyPi.org,搜索 PIL 显示 1.029 个包。我应该拿哪一个?结果中有大量的包,它们的名称或描述中甚至都没有提到 PIL。这有用吗?
我现在使用 Python 3.8.10,就像我安装 3.10 和 3.9 之前一样,我想这些包可能还没有移植到较新的 python 版本。但即使在 3.8 上,它们似乎也不可用。
这让我想到另一个问题:
当我安装 Python 版本并从该 Python 版本创建虚拟环境时,pip 或我用来为该 venv 安装包的任何工具是否知道应该为哪个 Python 版本安装包?以便该包可以与 Python 版本一起使用并与之兼容?或者我是否需要自己处理这个问题,如果需要,我该如何确保这一点? 据我在 PyCharm 的包详细信息中看到的,没有任何信息是否与 venv 中使用的 Python 版本兼容。
最后,在考虑部署 Python 应用程序时如何使用虚拟环境。
在开发过程中,例如使用 PyCharm 我将我写的东西提交给 git。我也应该将 venv 提交给 git 吗?以及如何推出 Python 应用程序?只需将完整的项目文件夹复制到目标系统,或者使用 git 进行检查?包括venv文件夹?我应该首先在目标系统上安装完全相同版本的 Python 解释器吗? 然后我如何运行该应用程序以确保使用安装在 venv 中的所有需要的包?
【问题讨论】:
-
是什么导致这些错误消息弹出?需要明确的是,正在使用哪些命令以及您在哪里确切地输入它们?
-
添加了 pip 命令并提到它是在项目文件夹中激活的 venv 中执行的。
-
刚刚发现我与“import cv2”有相同的包问题。我应该安装哪个软件包来满足“cv2”?
-
看起来该命令由于高负载而被禁用。此信息可在错误消息中提到的页面以及快速搜索中找到:stackoverflow.com/questions/66375972/…、theregister.com/2021/05/25/pypi_search_error。您仍然可以从 pypi.org 搜索软件包并使用常规安装命令。
-
@navneethc 感谢您的评论。但是为什么没有提到如何搜索呢?与提供有关后端负载的信息相比,这不是更有帮助吗?
标签: python-3.x pip pycharm python-venv