使用pip与MacPorts安装Python软件包


12

我可以安装Python包(例如numpy在我的Mac或者通过MacPorts的):

port install py-numpy

或通过pip

pip install numpy

每种方法的一般优点/缺点是什么?什么时候应该使用每种方法?

  • 我什么时候比另一个更喜欢?
  • 我要安装的软件包是小还是大(例如numpy)有关系吗?
  • 它是否取决于我使用的python版本(2.xvs. 3.x或Apple的pythonvs. MacPort的python)?
  • python我的Mac上是否安装了多个版本,这有关系吗?
  • 它们可以同时使用吗?

我希望找到一个简短的答案,列出每种方法的一些优点/缺点,并讨论何时选择一种方法。


相关但过于具体:stackoverflow.com/questions/16895282/…。我要的是一般的python软件包,而不仅仅是matplotlib
jvriesem '17

AFAIK已经安装了这些-您可以在终端中检入:> python和下一个命令>将numpy导入为np,如果没有错误,则说明有错误。另一种解决方案是使用来自continuum.io/downloads的 anaconda- 具有许多功能,并且在您的anaconda文件夹中将进行pip的进一步安装。
扬(Yan)

@Yoan:numpy只是一个例子。我问的是一般的软件包安装。
jvriesem '17

Answers:


3

它们可以同时使用,并且在混合两者之间应该没有任何问题(有点大的警告和陷阱……)

警告

需要注意的是,macports / homebrew和pip将不知道彼此之间是否已安装。

例如,假设您在Mac上安装了python 3.6。您想要nltkMacbooks上该版本在技术上不可用,但它是pip。因此,您在pip上进行安装。两个月后,您看到它已安装在Macports上并选择安装它。现在nltk,您的计算机上有两个不同的版本,因此请注意emptor

陷阱

如果确实在Macports中使用了pip,则需要确保它是通过Macports安装并与该python版本相关联的pip。因此,例如,您将看到py35-pip,py36-pip等。

一旦安装了正确的pip,您就可以使用Macports的select命令来确保它已被相应版本的python激活:

sudo port select

我的经验是,将模块安装到MacPorts创建的Python全局区域会引起冲突。MacPorts迟早会尝试安装pip已安装的端口。它将发出有关该端口中存在但MacPorts未安装的文件的错误消息。我认为@IanC的答案更好:仅使用MacPorts安装到全局Python区域,仅使用pip安装在虚拟环境中。
吉姆·德拉汉

4

您应该使用pip它,因为它是用于管理软件包安装的Python本地工具,您不应将其通过pip-install方式安装到基本的Python安装中。如果要将所有内容通过点安装方式安装到计算机上的基本Python安装中,那么必须理清多个软件存储库之间的固定版本依赖关系可能会很麻烦。

相反,您应该pip-install virtualenv,然后使用它来管理每个虚拟环境的不同虚拟Python安装以及所有相关的pip-installed软件包。

这样一来,您就可以从beautifulsoup一个软件存储库中的1.x 切换到beautifulsoup另一个存储库中的2.x,而无需费心地进行依赖管理。


0

我只是做了一个快速测试,使用HomebrewMacPortspip3搜索了相同的软件包:

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts pip3具有相同的软件包(版本 1.18.1),而 Homebrew具有版本 1.16

与他人合作时,最好就开发环境的配置达成一致,否则您将开始遇到异常并获得不同的测试结果。因此,最好的工具是大家都同意的工具;-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.