Python pip 和 conda 包管理器

Python pip and conda package manager

是的,我在 python 世界问同样的老问题。关于包管理器 pipconda.

Pippython 软件包完美配合,但在 python 具有 c 扩展名的软件包(如 pandas, matplotlib 等)下会卡住。这就是 conda 的用武之地,以节省在设置环境中打破头脑的时间。 但是,我偶然发现了一些环境,其中 conda 通道没有 flask-sqlalchemy, flask-httpauth 等包。因此您必须为此使用 pip。用两个不同的包管理器管理你的环境对我来说很奇怪,可能是不可取的。

使用此类包管理器管理 python 依赖项的最佳实践是什么。需要高手指教,感觉中的差距。

任何 ideas/help 将不胜感激。

我也用Pycharm,只能识别conda包,不能识别pip包。那是另一种痛苦。所以我不得不回到 vim(这很好 - 我喜欢它)但是调试很困难或者不像 pycharm 那样容易,比如 IDE。

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

这是一个不错的工作流程示例(来自 this blog):

  1. Create a project folder in the ~/repos/ directory on my computer.
  2. Create an environment.yml file in the directory. Typically the environment name will be the same as the folder name. At minimum, it will specify the version of Python I want to use; it will often include anaconda as a dependency.
  3. Create the conda environment with $ conda env create.
  4. Activate the conda environment with $ source activate ENV_NAME.
  5. Create a .env file containing the line source activate ENV_NAME. Because I have autoenv installed, this file will be run every time I navigate to the project folder in the Terminal. Therefore, my conda environment will be activated as soon as I navigate to the folder.
  6. Run $ git init to make the folder a Git repository. I then run $ git add environment.yml && git commit -m 'initial commit' to add the YAML file to the repository.
  7. If I want to push the repository to Github, I use $ git create using Github's hub commands. I then push the master branch with $ git push -u origin master.

还不错,但不完美。一些缺点是:

  1. 直接依赖与依赖的依赖一起列出。
  2. 正确删除包很复杂。
  3. 当有从其他来源安装的包时,它不起作用。

然而,这是一个好的开始,根据我的经验,大多数团队都不会费心去发明比这个更好的解决方案。

P.S.: 在过去的一年中,PyCharm 显着改善了对 conda 的支持,截至 2017 年 4 月,它可以正确识别 conda 和 pip 包。