Macports 无法识别 pip 安装的软件包

问题描述 投票:0回答:2

直到今天,我一直在使用 macports 版本的

python27
并通过 macports 安装 python 包。今天,我需要一些无法通过 macports 获得的软件包;我了解了 pip 并在那里找到了它们。然而,在通过 pip 安装这些软件包后,我意识到 pip 和 macports 都看不到对方安装的内容。因此,为了保持一致性,我决定卸载所有 macports 软件包,通过 macports 安装
python27
py27-pip
,然后继续通过 pip 安装所有 python 软件包。

这工作正常,但由于 macports 不知道我的 pip 安装的 python 包,所以我在安装其他依赖于 python 的东西(例如 inkscape)时遇到了麻烦:macports 尝试安装自己的版本,例如

py27-numpy
(已通过 pip 安装)然后安装失败,因为它“已存在且不属于已注册的端口。”

是否有一致的方法来使用 pip 并让 macports 识别出其他功能可能需要的 python 软件包已经安装?

python macos python-2.7 pip macports
2个回答
2
投票

解决方案是:不要使用Macports来安装Python的包。

Macports 是一个通用的包管理器,它在其数据库中注册已安装的包。

Pip 是 Python 的包管理器,因此如果您想安装 Python 包,请使用适当的包管理工具。 Pip 没有自己的数据库来保存有关已安装内容的证据 - 它只是检查 Python 的路径以查看包是否在那里(这就是您想要的)。

迟早你会使用 Virtualenv,并且你也需要 pip 来安装软件包,所以最好在任何地方都使用它。


0
投票

相当老的问题,但当我偶然发现它时,这里是:

  • 我自己通过 macports 安装的唯一与 python 相关的软件包是 python 和 pip
  • 使用 pip 安装 python 包,但不要使用 sudo!无论如何,这是推荐使用 pip 的方式
  • 这将导致您的 pip 安装的软件包位于 ~/Library/Python/3.9/lib/python/site-packages 下
  • 如果 macports 安装的软件包有 python 依赖项,让它做它的事情(使用 sudo,这是运行 macports 的推荐方法)
  • Macports 将在 /opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages 下安装 python 软件包,从而避免任何冲突

我安装的 macports 软件包很少需要安装 macports 管理的 py39-whatever 软件包,但这种情况确实发生了。不管怎样,这样就不会发生冲突。

归根结底,对于有特定要求的任何东西,可能仍然最好使用 virtualenv,但至少这是将东西安装到主环境中的一种不错的方法。

© www.soinside.com 2019 - 2024. All rights reserved.