2014-05-24 34 views
2

直到今天,我一直在使用macports版本python27并通过macports安装python软件包。今天,我需要一些通过macports无法使用的软件包;我了解了点子,并在那里找到了它们。然而,在通过pip安装这些软件包之后,我意识到pip和macports都不会看到其他软件安装的东西。因此,为了保持一致性,我决定卸载所有macports软件包,通过macports安装python27py27-pip,然后继续通过pip安装我的所有python软件包。Macports不识别pip安装的软件包

这很好,但由于macports不知道我的pip安装的python软件包,所以在安装依赖于python的其他软件时(例如,inkscape),我遇到了麻烦:macports试图安装它自己的版本, py27-numpy(已经由pip安装),然后安装失败,因为它“已经存在并且不属于注册的端口”。

是否有一致的方式来使用pip并让macport识别出可能需要其他东西的python包已经安装了?

回答

2

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

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

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

无论如何,无论如何你会使用Virtualenv,你也需要点子来安装软件包,所以最好在任何地方使用它。

+0

感谢您的回复。我没有打算使用macports来安装python的包,但它需要python来安装其他东西(例如,inkscape)。有没有办法告诉它,PIP已经安装了诸如numpy之类的东西,并让它使用它们? –

+0

是否有理由需要安装自己的numpy版本而不是使用MacPorts版本?你应该坚持这样或那样:(1)使用MacPorts端口安装你需要的所有软件包,并且如果没有端口,就回退到通过pip手动安装(或者更好的是请求创建或更新端口);或者(2)通过'pip'手动管理所有软件包。你可以在任何一种场景中使用'virtualenv'。 –

+0

我希望能使用选项(2),因为pip看起来更全面,我想要一个单独的管理器。但是,macports安装的许多其他程序依赖于python,所以它总是会尝试安装它自己的版本。 –

相关问题