2016-03-23 20 views
2

是的,我在Python世界中提出了同样的老问题。它关于包管理器 pipcondaPython pip和conda包管理器

Pippython软件包完美结合,但遇到包含c-extensions的Python软件包(例如pandas, matplotlib等)。这就是为了在设置环境中节省时间而在破门而入的地方。 但是我偶然发现了一些conda频道没有包含flask-sqlalchemy, flask-httpauth等包的环境,所以你必须使用pip。用两个不同的软件包管理器管理你的环境听起来很奇怪,可能并不可取。

什么是最佳实践用于管理使用此类包管理器的python依赖项。需要专家建议感受差距。

任何想法/帮助将不胜感激。

我也使用Pycharm,它只能识别conda包而不是pip包。这是另一种痛苦。所以我必须回退到vim(这很好 - 我喜欢这样),但是调试很困难,或者它不像IDE这样的pycharm。

P.S.我使用Linux/Mac进行开发。

+0

只是为了一个小部分评论......一旦你告诉PyCharm使用康达解释,该PyCharm GUI管理软件包使用畅达后,这是真的。但是,只要您按照Conda的要求使用它,您仍然可以前往终端并使用pip。 –

回答

1

这里是一个体面的工作流程(从this blog)的例子:

  1. 在我的电脑上~/repos/目录中创建一个项目文件夹。
  2. 在目录中创建一个environment.yml文件。通常,环境名称将与文件夹名称相同。至少,它 将指定我想要使用的Python版本;它通常会在 中包含anaconda作为依赖项。
  3. 使用$ conda env create创建conda环境。
  4. $ source activate ENV_NAME激活conda环境。
  5. 创建一个包含行source activate ENV_NAME的.env文件。由于我安装了autoenv,因此每次导航到终端中的项目文件夹时都会运行此文件。因此,只要我导航到该文件夹​​,我的环境就会被激活。
  6. 运行$ git init使该文件夹成为Git存储库。然后运行$ git add environment.yml && git commit -m 'initial commit'将 YAML文件添加到存储库。
  7. 如果我想将存储库推送到Github,我使用Github的hub命令使用$ git create。然后我用$ git push -u origin master推动主分支。

这是体面的,但并不完美。其中一些缺点如下:

  1. 立即依赖项与依赖项的依赖项一起列出。
  2. 正确删除软件包非常复杂。
  3. 当有来自其他来源安装的软件包它不工作。

然而,这是一个很好的开始,根据我的经验,大多数团队并不打算比这个更好地发明解决方案。

P.S .:在去年,PyCharm显着提高了它的conda支持,并且到2017年4月它已经正确认可conda和pip软件包。