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

How do I keep track of pip-installed packages in an Anaconda (Conda) environment?

我已经安装并使用了Python发行版,并且已经开始使用Python(Conda)环境。我可以使用标准的conda install...命令将分发中的包放入我的环境中,但要使用外部的任何东西(即flask wtf、flask sqlacchemy和alembic),我需要在活动环境中使用pip install。但是,当我查看目录中或使用conda list的环境内容时,这些pip installed包不会出现。

使用pip freezepip list只列出了我安装过的每个包。

是否有办法跟踪我的每一个水蟒中安装了哪些东西(包括pipconda)?


Conda env现在自动执行此操作(如果PIP与Conda一起安装)。

通过使用用于迁移环境的导出工具,可以看到这是如何工作的:

1
conda env export -n <env-name> > environment.yml

该文件将列出CONDA包和PIP包:

1
2
3
4
5
6
7
8
9
10
11
name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

如果要继续导出环境,请将environment.yml移到新主机并运行:

1
conda env create -f path/to/environment.yml

conda将只读保持轨道的packages installed它。和pip会给你的那人packages either installed使用pipinstaller本身或他们用setuptools他们setup.pySO康发到生蛋的信息。你基本上有三个选项。 </P >

  • 你能抓住这个联合会的conda listpip freeze和管理的packages那都是installed使用conda(这节目在conda list)与condaPackage Manager和酮类化合物,这是installed与pip(这节目在pip freeze但不在conda list)和pip。。。。。。。 </P >

  • 安装在你的环境中python只读,pipdistributepackages和处理一切与pip。。。。。。。(这是不平凡的,如果你是Windows…………………) </P >

  • 建立你自己的condapackages,和处理一切与conda。。。。。。。 </P >

  • 我会personally recommend期权的第三天,它的很容易的建立condapackages。。。。。。。这是一部以recipes NEA在版本库中的continuum’s account GitHub。但它通常就是下: </P >

    1
    2
     conda skeleton pypi PACKAGE
     conda build PACKAGE

    或是: </P >

    1
    conda pipbuild PACKAGE

    当你也要建立他们一次,你可以上传他们的http:/ / / binstar.org和安装是从那里。 </P >

    然后你将拥有的一切conda管理使用。 </P >


    有一个分支(康大的新pypi安装),adds更好的集成与PIP和pypi。。。。。。。特别是康大表也会显示PIP installed packages和康大的第一安装将试图找到一种康大包装和失败,会使用PIP的安装的包。 </P >

    本店是定期的是出产后本周的SO,2.1版康大学院将有更好的PIP集成与康大。 </P >


    我followed"维克多回答kerkez’s和都有混合的成功。我发现,有时这个配方研究 </P >

    conda skeleton pypi PACKAGE

    conda build PACKAGE

    请看样的一切操作,但我可以不successfully进出包装。最近,我问什么,这是《康达的用户群和赫德从"特拉维斯奥列芬特锚是最好的方式来使用康大的建设和管理的packages那不与船舶的Python。你能读这个线程在这里,但我将在下面描述的方法对hopefully麦克的解答的问题更多的运算的完整………………… </P >

    例如:我是要去的prettyplotlib包安装好Windows使用2.2.5康大。 </P >

    conda build --build-recipe prettyplotlib1A) </P >

    你将看到的消息,建立全看好,直到最终的试验段的建设。我看到这个错误 </P >

    File"C:\Anaconda\conda-bld\test-tmp_dir
    un_test.py", line 23
    import None SyntaxError: cannot assign to None TESTS FAILED: prettyplotlib-0.1.3-py27_0

    1b)的热情去/康大- recipes / prettyplotlib meta.yaml和编辑的文件。目前,《packages被弹出式样在1A降压的结果在YAML文件有错误,这是在test型。例如,这里是如何设计的prettyplotlib扭头看我的 </P >

    1
    2
    3
    4
    test:   # Python imports   imports:
        -
        - prettyplotlib
        - prettyplotlib

    编辑本段℃的空白行preceded通过和remove的冗余prettyplotlib也行。在这段时间的写作我有发现我需要编辑这类文件的最meta.yaml外部packages I AM installing与康大的意思,这有一个空白的进出线错误致因的沿用冗余进出的给定的包装。 </P >

    1C)运行的命令从1A,这应该完全退出与错误的这段时间。在端部到你将被问如果你想上传的binstar建造的。I entered好,然后看到了这样的消息: </P >

    If you want to upload this package to binstar.org later, type:

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

    这tar.bz2文件是建立,你现在真的需要安装。 </P >

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

    下面的这些步骤,我要用successfully康大的安装一个数的packages说不来与Python。以前,我有installed一些使用这些点子,所以我是pip uninstall PACKAGE之前的installing与康大包装。康大,我可以使用,现在的管理(几乎)所有的我的packages与一个单一的方法,将一种混合性的东西installed与康大,匹普,便于安装和_,python setup.py install。 </P >

    方法的背景下,我想这最近的博客后用"特拉维斯奥列芬特将helpful中心的人谁不喜欢我们的一切,这是appreciate激情的鲁棒的Python包装的东西,但当然,appreciate当"好作品"。康大看来像一个伟大的方式向………………… </P >


    这就是我为什么要写picky:http://picky.readthedocs.io/

    它是一个python包,跟踪在virtualenvs和conda envs中使用pip或conda安装的包。


    我想这里缺少的是当你这样做的时候:

    1
    >pip install .

    要使用setup.py安装本地包,它安装一个对所有使用的Conda环境都可见的包。同一版本的python。注意,我使用的是Conda版本的PIP!

    例如,如果我使用python2.7,它会将本地包放在这里:

    /usr/local/anaconda/lib/python2.7/站点包

    如果稍后创建一个新的conda env,python=2.7(=默认值):

    1
    2
    3
    >conda create --name new

    >source activate new

    然后做:

    1
    (new)>conda list    // empty - conda is not aware of any packages yet

    但是,如果我这样做:

    1
    (new)>pip list      // the local package installed above is present

    因此,在这种情况下,Conda不知道PIP包,但该包对Python是可用的。

    但是,如果我在创建(并激活)新的conda env之后安装本地包(再次使用pip),那么conda会看到它:

    1
    (new)>conda list   // sees that the package is there and was installed by pip

    因此,我认为Conda和PIP之间的交互存在一些问题——即,使用PIP从一个Conda env中安装本地包,使该包对同一个Python版本的所有其他Conda env可用(但不能通过Conda列表看到)。


    我通常在"pip"命令之前为要安装包的特定环境的"bin/pip"文件夹加前缀。例如,如果要在环境py34中安装pymc3,则应使用以下命令:

    1
    ~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3

    您基本上只需要找到环境"bin/pip"文件夹的正确路径,并将其放在安装命令之前。


    conda env export列出了环境中的所有conda和pip包。conda-env必须安装在conda根(conda install -c conda conda-env中)。

    编写描述当前环境的environment.yml文件:

    1
    conda env export > environment.yml

    参考文献:

    • https://github.com/conda/conda-env/
    • 网址:https://github.com/conda/conda-env/issues/12
    • 小精灵


      您可以在Conda环境中安装以下给定的命令:

      埃多克斯1〔8〕

      然后安装环境中需要的所有PIP包。

      在安装所有Conda和PIP包以导出环境后,请使用:

      埃多克斯1〔9〕

      这将在文件夹中创建所需的文件


      我的which pip显示了以下路径:

      1
      2
      $ which pip
      /home/kmario23/anaconda3/bin/pip

      因此,使用pip install 安装的任何软件包在导出列表时都必须反映在软件包列表中,使用:

      1
      $ conda list --export > conda_list.txt

      但是,我没有。因此,我使用了其他几个人建议的以下命令:

      1
      2
      3
      4
      5
      6
      # get environment name by
      $ conda-env list

      # get list of all installed packages by (conda, pip, etc.,)
      $ conda-env export -n <my-environment-name> > all_packages.yml
      # if you haven't created any specific env, then just use 'root'

      现在,我可以看到我的all-packages.yml文件中的所有包。