【问题标题】:Makefiles does not start conda environmentMakefiles 不启动 conda 环境
【发布时间】:2017-08-18 07:27:56
【问题描述】:

我有生成文件

.PHONY: start-generate

start-generate:
    source activate myenv
    mkdir "data_channels_`date +%Y%m%d_%H%M%S`"
    python main/datageneration.py ./"data_channels_`date +%Y%m%d_%H%M%S`" 3

但是当我运行它时,我得到了

$ make start-generate
source activate myenv
make: source: Command not found
make: *** [start-generate] Error 127

虽然我可以在 make 之外运行 source activate myenv

如果我也可以尝试

start-generate:
    ( \
        source activate myenv; \
        mkdir "data_channels_`date +%Y%m%d_%H%M%S`"; \
        python main/datageneration.py ./"data_channels_`date +%Y%m%d_%H%M%S`" 3; \
    )

我得到了错误

/bin/sh: 2: source: not found
Traceback (most recent call last):
  File "main/datageneration.py", line 1, in <module>
    import pandas as pd
ImportError: No module named pandas
make: *** [start-generate] Fehler 1

pandas 的错误很明显,因为 source-command 不起作用。关于这一点,有消息/bin/sh: 2: source: not found。也许问题是我需要/bin/bash 而不是/bin/sh?如果有,如何获得?

这里有什么问题?

【问题讨论】:

    标签: python makefile conda


    【解决方案1】:

    可以直接在virtualenv中使用python。

    .PHONY: start-generate
    
    start-generate:
        mkdir "data_channels_`date +%Y%m%d_%H%M%S`"
        /absPATH/python main/datageneration.py ./"data_channels_`date +%Y%m%d_%H%M%S`" 3
    

    或者你可以像下面这样:

    How to use virtualenv in makefile

    start-generate:
        ( bash -c "source activate myenv; \
            mkdir "data_channels_`date +%Y%m%d_%H%M%S`"; \
            python main/datageneration.py ./"data_channels_`date +%Y%m%d_%H%M%S`" 3" )
    

    【讨论】:

    • 那行不通:每个人在其他地方都有自己的 conda 环境。当我将 Makefile 提供给同事时,如果我按照您的建议进行操作,它将不再起作用。
    • 考虑不同的环境,source activate myenv virtualenv 的名称可能不同。您可以像单元测试一样编写 Makefile,init 以创建一个具有您喜欢的名称的 virtualenv pip install requirements,然后是 start-generate
    • 在我的公司中,我们有约定如何调用“myenv”,所以这不是问题。我不想每次运行 start-generate 时都创建一个新环境。我不确定你到底是什么意思。你能发布你正在考虑的 Makefile 吗?
    • 我找到了一种方法。 stackoverflow.com/questions/24736146/…>
    • 我们靠得更近了,但还不行。我相应地更新了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-08-04
    • 1970-01-01
    • 2022-01-18
    • 2019-01-15
    • 1970-01-01
    相关资源
    最近更新 更多