簡體   English   中英

從makefile激活Anaconda Python環境

[英]Activate Anaconda Python environment from makefile

我想使用makefile來使用makefile和anaconda / miniconda構建我的項目環境,所以我應該能夠克隆repo並簡單地運行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:source:找不到命令

make:*** [來源]錯誤127

我已經搜索了一個解決方案,但是[這個問題/答案( 如何在Makefile中獲取腳本? )表明我不能在makefile中使用source

然而, 這個答案提出了一個解決方案(並收到了幾個贊成票),但這對我來說也不起作用

(\\
source / home / vagrant / miniconda / bin / activate myproject; \\

/ bin / sh:2:source:not found

make:*** [來源]錯誤127

我還嘗試將source activate步驟移動到單獨的bash腳本,並從makefile執行該腳本。 這不起作用,我假設出於類似的原因,即我在shell中運行source

我應該補充說,如果我從終端運行source activate myproject ,它可以正常工作。

我有類似的問題; 我想從Makefile創建或更新conda環境,以確保我自己的腳本可以使用來自該conda環境的python。
默認情況下,使用sh來執行命令,而sh不知道 (也參見此SO答案 )。 我只是將SHELL設置為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聲明。我有一個安裝shell腳本,我在其中設置conda環境(源激活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'在我的shell腳本中設置的環境; source命令應該更改當前shell。 我只想分享這個,以便其他人不會浪費時間嘗試這樣做。 我知道autotoools有一種使用python的方法。 但制作計划在這方面可能有限。

我目前的解決方案是shell腳本:

cat py2make.sh

#!/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

不知道我哪里錯了。 如果有人有更好的解決方案,請分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM