如何在Anaconda(Conda)环境中跟踪pip安装的软件包?

gro*_*zek 128 python env pip anaconda conda

我已经安装并一直在使用Anaconda Python发行版,我已经开始使用Anaconda(Conda)环境了.我可以使用标准conda install...命令将包中的包放入我的环境中,但是要使用外部的任何东西(例如Flask-WTF,flask-sqlalchemy和alembic),我需要pip install在活动环境中使用.但是,当我查看环境的内容时,无论是在目录中,还是使用conda list这些pip installed包都没有显示出来.

使用pip freezepip list列出我曾经安装的每个包.

有没有一种方法来跟踪什么是在我的每一个巨蟒env(能够对S pipconda安装)?

con*_*xyz 110

conda-env现在自动执行此操作(如果pip与conda一起安装).

您可以使用用于迁移环境的导出工具来查看其工作原理:

conda env export -n <env-name> > environment.yml
Run Code Online (Sandbox Code Playgroud)

该文件将列出conda包和pip包:

name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing
Run Code Online (Sandbox Code Playgroud)

如果您希望继续导出环境,请移至environment.yml新主机并运行:

conda env create -f path/to/environment.yml
Run Code Online (Sandbox Code Playgroud)

  • 只是为了让未来的读者清楚这一点:“-pip:”部分标记了通过 pip 安装的所有软件包。另外,据我所知,“conda env export”**永远不会生成 semvar 匹配值**,如本例中所示的“-nodejs=0.10.*”。它将给出一个明确的值,例如“-nodejs=0.10.1”,如果您想要的话,您需要添加“*”。如果它能够处理 semvar 匹配,那就太棒了,我很高兴听到如何实现这一奇迹。:) (2认同)

Vik*_*kez 64

conda只会跟踪它安装的软件包.并且pip将为您提供使用pip安装程序本身安装的软件包,或者setuptools在他们的setup.pyconda构建中使用它们生成egg信息.所以你基本上有三种选择.

  1. 你可以采取的联合conda listpip freeze和管理使用安装的软件包conda(即展现在conda list)与conda包管理器,并确保安装与个位pip(即秀pip freeze,但不是在conda list)与pip.

  2. 只在您的环境中安装python,pipdistribute打包和管理所有内容pip.(如果你在Windows上,这不是那么简单......)

  3. 构建自己的conda包,并使用conda.

我个人会推荐第三个选项,因为它很容易构建conda包.在continuum的github帐户上有一个git的示例配方存储库.但它通常归结为:

 conda skeleton pypi PACKAGE
 conda build PACKAGE
Run Code Online (Sandbox Code Playgroud)

要不就:

conda pipbuild PACKAGE
Run Code Online (Sandbox Code Playgroud)

此外,当您构建它们一次时,您可以将它们上传到https://binstar.org/并从那里安装.

然后你将使用所有管理conda.

  • 我只是尝试`〜/ anaconda/bin/pip install memory-profiler`和`conda install numba`,它们都显示在`〜/ anaconda/bin/pip freeze`中. (3认同)
  • “连续统的github帐户上的示例食谱的git存储库”您是说https://github.com/ContinuumIO/anaconda-recipes吗?如果可以,请链接 (2认同)

Tra*_*ant 24

conda(new-pypi-install)的一个分支增加了与pip和PyPI的更好集成.特别是conda list也将显示pip安装的包,conda install将首先尝试查找conda包并且失败将使用pip来安装包.

这个分支计划在本周晚些时候合并,因此conda 2.1版将与conda进行更好的pip集成.

  • 这被删除了吗?如果我运行,比如说,`conda install autopep8`它会告诉我"找不到包",我应该手动搜索anaconda.org. (9认同)
  • 澄清,因为我多次误读了这一点.@Travis意味着我认为如果一个人在conda中运行,那么运行pip将首先搜索conda包?反过来绝对不是这样 - conda install不会寻找pypi包,甚至不是pypi.binstar.org上的项目.这是conda 3.5.2. (5认同)
  • 我想指出,这已经在conda 2.2.3中工作了(可能在此之前).它的工作方式是,如果你尝试`conda install package`并且它找不到conda配方,它会尝试通过`pip`安装它(然后跟踪它).如果不在您的环境中,它甚至可以帮助建议安装`pip`.感谢Travis的所有工作! (2认同)

Jos*_*ann 16

我跟着@Viktor Kerkez的回答并取得了不同程度的成功.我发现有时这个配方

conda skeleton pypi PACKAGE

conda build PACKAGE

看起来一切正常但我无法成功导入PACKAGE.最近我在Anaconda用户组上询问了这个问题,并听取了@Travis Oliphant本人关于使用conda构建和管理Anaconda不附带的软件包的最佳方法.你可以在这里阅读这个主题,但我将描述下面的方法,希望能够更完整地回答OP的问题......

示例:我将使用conda 2.2.5在Windows上安装优秀的prettyplotlib软件包.

1A) conda build --build-recipe prettyplotlib

在构建的最终TEST部分之前,您将看到构建消息看起来都很好.我看到了这个错误

文件"C:\ Anaconda\conda-bld\test-tmp_dir\run_test.py",第23行import无SyntaxError:无法分配给无TESTS FAILED:prettyplotlib-0.1.3-py27_0

1b)进入/ conda-recipes/prettyplotlib并编辑meta.yaml文件.目前,正如步骤1a中那样设置的包导致yaml文件在该test部分中有错误.例如,这是我的寻找方式prettyplotlib

test:   # Python imports   imports:
    - 
    - prettyplotlib
    - prettyplotlib
Run Code Online (Sandbox Code Playgroud)

编辑此部分以删除前面带有的空行 - 并删除冗余的prettyplotlib行.在撰写本文时,我发现我需要编辑大多数这样的meta.yaml文件,用于我用conda安装的外部包,这意味着有一个空白的导入行导致错误以及给定包的冗余导入.

1c)从1a重新运行命令,这次应完成输出错误.在构建结束时,系统会询问您是否要将构建上传到binstar.我输入了No然后看到了这条消息:

如果您想稍后将此包上传到binstar.org,请键入:

$ binstar上传C:\ Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

tar.bz2文件是您现在需要实际安装的版本.

2) conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

按照这些步骤,我已成功使用conda来安装许多Anaconda未附带的软件包.以前,我使用pip安装了其中的一些,所以我pip uninstall PACKAGE在使用conda安装PACKAGE之前做过.使用conda,我现在可以使用单一方法管理(几乎)所有软件包,而不是使用conda,pip,easy_install和python setup.py install安装的东西.

对于上下文,我认为@Travis Oliphant 最近的博客文章将对像我这样的人有所帮助,他们不喜欢强大的Python包装中的所有内容,但当"东西正常"时肯定会欣赏.康达似乎是一个很好的前进方式......

  • 使用conda版本3.5.2,命令$ conda build --build-recipe XXX; 使用'无法识别的参数:--build-recipe'出错.完全回应是; 用法:conda-build [-h] [-c] [ - no-binstar-upload] [ - 输出] [-s] [-t] [ - no-test] [-V] [-q] RECIPE_PATH [RECIPE_PATH ...] conda-build:错误:无法识别的参数: - build-recipe (2认同)

Chr*_*ers 10

这就是我写Picky的原因:http://picky.readthedocs.io/

它是一个python包,用于跟踪virtualenvs和conda envs中使用pip或conda安装的软件包.