Makefileを使用して、makefileと anaconda/miniconda を使用してプロジェクトの環境を構築したいので、リポジトリのクローンを作成してmake myproject
を実行できるはずです。
myproject: build
build:
@printf "\nBuilding Python Environment\n"
@conda env create --quiet --force --file environment.yml
@source /home/vagrant/miniconda/bin/activate myproject
ただし、これを試してみると、次のエラーが発生します
make:ソース:コマンドが見つかりません
make:*** [ソース]エラー127
解決策を探しましたが、[この質問/回答( Makefileでスクリプトを入手する方法は? )は、Makefile内からsource
を使用できないことを示唆しています。
この回答 しかし、解決策を提案します(そしていくつかの賛成票を受け取りました)が、これは私にとってもうまくいきません
(\
source/home/vagrant/miniconda/bin/activate myproject; \)
/ bin/sh:2:ソース:見つかりません
make:*** [ソース]エラー127
また、source activate
ステップを別のbashスクリプトに移動し、そのスクリプトをmakefileから実行してみました。それは機能しません。同様の理由で、つまり、シェル内からsource
を実行していると思います。
ターミナルからsource activate myproject
を実行すると、正しく機能することを追加する必要があります。
私も同様の問題を抱えていました。 Makefileからconda環境を作成または更新して、自分のスクリプトがそのconda環境のpythonを使用できるようにしたかったのです。
デフォルトでは、makeはshを使用してコマンドを実行し、shわからないsource( this SO answer )も参照)Iシェルをbashに設定するだけで、最終的に(関連部分のみ):
Shell=/bin/bash
CONDAROOT = /my/path/to/miniconda2
.
.
install: sometarget
source $(CONDAROOT)/bin/activate && conda env create -p conda -f environment.yml && source deactivate
それが役に立てば幸い
あなたはこれを使うべきです、それは今のところ私にとって機能的です。
report.ipynb : merged.ipynb
( bash -c "source ${HOME}/anaconda3/bin/activate py27; which -a python; \
jupyter nbconvert \
--to notebook \
--ExecutePreprocessor.kernel_name=python2 \
--ExecutePreprocessor.timeout=3000 \
--execute merged.ipynb \
--output=$< $<" )
私も同じ問題を抱えていました。基本的に、唯一の解決策は9000で示されています。conda環境をセットアップするセットアップシェルスクリプトがあり(source activate python2)、makeコマンドを呼び出します。 Makefile内から環境をセットアップしてみましたが、成功しませんでした。
Makefileに次の行があります:
installpy :
./setuppython2.sh && python setup.py install
エラーメッセージは次のとおりです。
make
./setuppython2.sh && python setup.py install
running install
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/test-easy-install-29183.write-test'
基本的に、書き込みアクセス権を持つローカルcondaを使用するようにconda環境をセットアップすることができました。しかし、これはmakeプロセスでは検出されません。 'source'を使用してシェルスクリプトで設定された環境がmakeプロセスに表示されない理由がわかりません。 sourceコマンドは、現在のシェルを変更することになっています。他の人がこれをやろうとして時間を無駄にしないように、私はこれを共有したいと思います。 autotooolsにはPythonを操作する方法があることを私は知っています。しかし、makeプログラムはおそらくこの点で制限されています。
私の現在の解決策はシェルスクリプトです:
#!/bin/sh
# the prefix should be change to the target
# of installation or pwd of the build system
PREFIX=/some/path
CONDA_HOME=$PREFIX/anaconda3
PATH=$CONDA_HOME/bin:$PATH
unset PYTHONPATH
export PREFIX CONDA_HOME PATH
source activate python2
make
これは私にとってはうまくいくようです。
同様の状況で 解決策 がありましたが、私にはうまくいかないようです:
変更したMakefileセグメント:
installpy :
( source activate python2; python setup.py install )
Makeを呼び出した後のエラーメッセージ:
make
( source activate python2; python setup.py install )
/bin/sh: line 0: source: activate: file not found
make: *** [installpy] Error 1
どこが間違っているのかわからない。誰かがより良い解決策を持っているなら、それを共有してください。