Anaconda Pythonディストリビューションをインストールして使用し、Anaconda(Conda)環境の使用を開始しました。標準のconda install...
コマンドを使用してディストリビューションからパッケージを環境に配置できますが、外部(Flask-WTF、flask-sqlalchemy、alembicなど)を使用するには、アクティブな環境でpip install
を使用する必要があります。ただし、ディレクトリ内で、またはconda list
を使用して環境の内容を見ると、これらのpip install
edパッケージは表示されません。
pip freeze
とpip list
を使用すると、これまでにインストールしたすべてのパッケージがリストされます。
Anacondaのenv
s(pip
とconda
の両方がインストールされている)のそれぞれの内容を追跡する方法はありますか?
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
conda
は、インストールしたパッケージのみを追跡します。また、pip
は、pip
インストーラー自体を使用してインストールされたパッケージ、またはsetup.py
でsetuptools
を使用したパッケージを提供するため、condaビルドはEgg情報を生成しました。したがって、基本的に3つのオプションがあります。
conda list
とpip freeze
の和集合を取り、conda
を使用してインストールされたパッケージ(conda list
で表示)をconda
パッケージマネージャーとpip
でインストールされたパッケージ(pip freeze
では表示されますが、conda list
では表示されません)をpip
で管理できます。
環境にpython
、pip
、およびdistribute
パッケージのみをインストールし、pip
ですべてを管理します。 (Windowsを使用している場合、これはそれほど簡単ではありません...)
独自のconda
パッケージをビルドし、conda
ですべてを管理します。
conda
パッケージを構築するのは非常に簡単なので、3番目のオプションを個人的にお勧めします。連続体のgithubアカウントには、サンプルレシピのgitリポジトリがあります。しかし、通常は次のように要約されます。
conda skeleton pypi PACKAGE
conda build PACKAGE
あるいは単に:
conda pipbuild PACKAGE
また、一度ビルドしたら、それらを https://binstar.org/ にアップロードし、そこからインストールするだけです。
その後、conda
を使用してすべてを管理します。
PipおよびPyPIとの統合を強化するconda(new-pypi-install)のブランチがあります。特にcondaリストにはpipがインストールされたパッケージも表示され、conda installはまずcondaパッケージを見つけようとしますが、失敗するとpipを使用してパッケージをインストールします。
Condaのバージョン2.1がcondaとのより良いpip-integrationを持つように、このブランチは今週後半にマージされる予定です。
私は@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は素晴らしい前進のようです...
これが私がPickyを書いた理由です: http://picky.readthedocs.io/
これは、virtualenvsおよびconda envsにpipまたはcondaでインストールされたパッケージを追跡するpythonパッケージです。
ここで欠けているのは、あなたがするときだと思います:
>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バージョン。
conda env export
は、環境内のすべてのcondaおよびpipパッケージをリストします。 conda-env
はcondaルート(conda install -c conda conda-env
)にインストールする必要があります。
現在の環境を説明するenvironment.yml
ファイルを作成するには:
conda env export > environment.yml
参照:
通常、「pip」コマンドの前に、パッケージをインストールする特定の環境の「bin/pip」フォルダーにプレフィックスを付けます。たとえば、py34をpy34環境にインストールする場合は、次のコマンドを使用する必要があります。
~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3
基本的には、ご使用の環境の「bin/pip」フォルダーへの正しいパスを見つけて、インストールコマンドの前に置くだけです。
以下のコマンドをconda環境にインストールすることから開始できます。
conda install pip
その後、環境に必要なすべてのpipパッケージをインストールします。
すべてのcondaおよびpipパッケージをインストールして環境をエクスポートした後、次を使用します。
conda env export -n <env-name> > environment.yml
これにより、必要なファイルがフォルダーに作成されます
私の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
ファイル内のすべてのパッケージを確認できます。