web-dev-qa-db-ja.com

Anaconda(Conda)環境でpip-installedパッケージを追跡するにはどうすればよいですか?

Anaconda Pythonディストリビューションをインストールして使用し、Anaconda(Conda)環境の使用を開始しました。標準のconda install...コマンドを使用してディストリビューションからパッケージを環境に配置できますが、外部(Flask-WTF、flask-sqlalchemy、alembicなど)を使用するには、アクティブな環境でpip installを使用する必要があります。ただし、ディレクトリ内で、またはconda listを使用して環境の内容を見ると、これらのpip installedパッケージは表示されません。

pip freezepip listを使用すると、これまでにインストールしたすべてのパッケージがリストされます。

Anacondaのenvs(pipcondaの両方がインストールされている)のそれぞれの内容を追跡する方法はありますか?

121
gromiczek

conda-env はこれを自動的に行います(condaでpipがインストールされた場合)。

環境の移行に使用されるエクスポートツールを使用すると、これがどのように機能するかを確認できます。

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

ファイルには、condaパッケージとpipパッケージの両方がリストされます。

name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

環境のエクスポートを実行する場合は、environment.ymlを新しいホストマシンに移動して実行します。

conda env create -f path/to/environment.yml
104
conner.xyz

condaは、インストールしたパッケージのみを追跡します。また、pipは、pipインストーラー自体を使用してインストールされたパッケージ、またはsetup.pysetuptoolsを使用したパッケージを提供するため、condaビルドはEgg情報を生成しました。したがって、基本的に3つのオプションがあります。

  1. conda listpip freezeの和集合を取り、condaを使用してインストールされたパッケージ(conda listで表示)をcondaパッケージマネージャーとpipでインストールされたパッケージ(pip freezeでは表示されますが、conda listでは表示されません)をpipで管理できます。

  2. 環境にpythonpip、およびdistributeパッケージのみをインストールし、pipですべてを管理します。 (Windowsを使用している場合、これはそれほど簡単ではありません...)

  3. 独自のcondaパッケージをビルドし、condaですべてを管理します。

condaパッケージを構築するのは非常に簡単なので、3番目のオプションを個人的にお勧めします。連続体のgithubアカウントには、サンプルレシピのgitリポジトリがあります。しかし、通常は次のように要約されます。

 conda skeleton pypi PACKAGE
 conda build PACKAGE

あるいは単に:

conda pipbuild PACKAGE

また、一度ビルドしたら、それらを https://binstar.org/ にアップロードし、そこからインストールするだけです。

その後、condaを使用してすべてを管理します。

64
Viktor Kerkez

PipおよびPyPIとの統合を強化するconda(new-pypi-install)のブランチがあります。特にcondaリストにはpipがインストールされたパッケージも表示され、conda installはまずcondaパッケージを見つけようとしますが、失敗するとpipを使用してパッケージをインストールします。

Condaのバージョン2.1がcondaとのより良いpip-integrationを持つように、このブランチは今週後半にマージされる予定です。

23
Travis Oliphant

私は@Viktor Kerkezの回答に従い、さまざまな成功を収めました。時々このレシピの

condaスケルトンpypiパッケージ

condaビルドパッケージ

すべてが機能しているように見えますが、PACKAGEを正常にインポートできませんでした。最近、これについて Anacondaユーザーグループ で質問し、Condaを使用してAnacondaに付属していないパッケージを構築および管理する最良の方法について@Travis Oliphant自身から聞きました。このスレッドを読むことができます here ですが、うまくいけば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インポートなしSyntaxError:なしに割り当てることができませんTESTS FAILED:prettyplotlib-0.1.3-py27_0

1b)/ conda-recipes/prettyplotlibに移動して、meta.yamlファイルを編集します。現在、ステップ1aのようにパッケージをセットアップすると、testセクションにエラーがあるyamlファイルが作成されます。たとえば、ここで私がprettyplotlibを探した方法を示します

test:   # Python imports   imports:
    - 
    - prettyplotlib
    - prettyplotlib

このセクションを編集して、-で始まる空白行を削除し、冗長なprettyplotlib行も削除します。この記事の執筆時点で、condaを使用してインストールする外部パッケージの場合、このようなほとんどのmeta.yamlファイルを編集する必要があることがわかりました。つまり、特定のパッケージの冗長インポートとともにエラーを引き起こす空白のインポート行があることを意味します。

1c)1aからコマンドを再実行します。今回はエラーなしで完了します。ビルドの最後に、ビルドを binstar にアップロードするかどうかを尋ねられます。 Noと入力すると、次のメッセージが表示されました。

このパッケージを後でbinstar.orgにアップロードする場合は、次を入力します。

$ binstar upload 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を使用してこれらの一部をインストールしていたため、condaでPACKAGEをインストールする前にpip uninstall PACKAGEを実行しました。 condaを使用すると、conda、pip、easy_install、およびpython setup.py installでインストールされたものを混在させるのではなく、単一のアプローチで(ほぼ)すべてのパッケージを管理できます。

コンテキストについては、これは 最近のブログ投稿 @Travis Oliphantによるもので、堅牢なPythonパッケージングに至るすべてを評価していないが、確かに感謝している私のような人々に役立つと思います。ただ動作します」。 condaは素晴らしい前進のようです...

16
Josh Hemann

これが私がPickyを書いた理由です: http://picky.readthedocs.io/

これは、virtualenvsおよびconda envsにpipまたはcondaでインストールされたパッケージを追跡するpythonパッケージです。

9
Chris Withers

ここで欠けているのは、あなたがするときだと思います:

>pip install .

setup.pyを使用してローカルパッケージをインストールするには、pythonの同じversionを使用するconda環境でallに見えるパッケージをインストールします。 。注:私はcondaバージョンのpipを使用しています!

たとえば、python2.7を使用している場合は、ローカルパッケージをここに配置します。

/usr/local/anaconda/lib/python2.7/site-packages

その後、python = 2.7(=デフォルト)で新しいconda envを作成した場合:

>conda create --name new

>source activate new

それから:

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

ただし、私がする場合:

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

したがって、この場合、condaはpipパッケージについては知りませんが、このパッケージはpythonで使用できます。

ただし、代わりにローカルパッケージをインストールする場合(再びpipを使用)after新しいconda envを作成(およびアクティブ化)し、nowcondaそれを見ます:

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

つまり、condaとpipの相互作用にはいくつかの問題があると思います。つまり、1つのconda env内からpipを使用してローカルパッケージをインストールすると、同じpythonバージョン。

3
M.H.

conda env exportは、環境内のすべてのcondaおよびpipパッケージをリストします。 conda-envはcondaルート(conda install -c conda conda-env)にインストールする必要があります。

現在の環境を説明するenvironment.ymlファイルを作成するには:

conda env export > environment.yml

参照:

2
Wes Turner

通常、「pip」コマンドの前に、パッケージをインストールする特定の環境の「bin/pip」フォルダーにプレフィックスを付けます。たとえば、py34をpy34環境にインストールする場合は、次のコマンドを使用する必要があります。

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

基本的には、ご使用の環境の「bin/pip」フォルダーへの正しいパスを見つけて、インストールコマンドの前に置くだけです。

2
Gianluca

以下のコマンドをconda環境にインストールすることから開始できます。

conda install pip

その後、環境に必要なすべてのpipパッケージをインストールします。

すべてのcondaおよびpipパッケージをインストールして環境をエクスポートした後、次を使用します。

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

これにより、必要なファイルがフォルダーに作成されます

1
Kavish

私のwhich pipは次のパスを示しています。

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

したがって、pip install <package-name>を使用してインストールするパッケージは、リストをエクスポートするときにパッケージのリストに反映する必要があります。

$ conda list --export > conda_list.txt

しかし、私はしません。そのため、代わりに、いくつかの他の人が提案した次のコマンドを使用しました。

# 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ファイル内のすべてのパッケージを確認できます。

0
kmario23