首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dockerfile中使用'pyenv activate‘

在Dockerfile中使用'pyenv activate‘
EN

Stack Overflow用户
提问于 2016-10-30 22:17:18
回答 1查看 4.3K关注 0票数 8

我正在尝试在Dockerfile文件(FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04)中安装和设置pyenv

下面是Dockerfile的后半部分(前半部分只是安装依赖项):

代码语言:javascript
复制
RUN useradd -ms /bin/bash user && echo "user:resu" | chpasswd && adduser user sudo
USER user
WORKDIR /home/user

# install pyenv
RUN git clone git://github.com/yyuu/pyenv.git .pyenv
ENV HOME  /home/user
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bashrc
RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bashrc
RUN echo 'eval "$(pyenv init -)"' >> .bashrc
RUN pyenv install 2.7.10

# install pyenv-virtualenv
RUN git clone https://github.com/yyuu/pyenv-virtualenv.git .pyenv/plugins/pyenv-virtualenv
RUN echo 'eval "$(pyenv virtualenv-init -)"' >> .bashrc

# setup virtualenv
RUN pyenv virtualenv 2.7.10 foo
RUN /bin/bash -c '      source .bashrc && \
                        pyenv activate foo && \
                        pip install numpy && \
                        pip install nltk'

Docker安装在最后一行失败,并显示以下信息:

代码语言:javascript
复制
Step 20 : RUN /bin/bash -c '    source .bashrc &&                       pyenv activate foo &&                      pip install numpy &&                    pip install nltk'
 ---> Running in 672826e55a40

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

这里的问题是什么?有没有用Docker设置pyenv的最佳实践?

EN

回答 1

Stack Overflow用户

发布于 2019-10-29 22:54:18

您的source .bashrc很可能会被忽略(因此默认的pyenv设置不会继续),因为bashrc通常被配置为abort if not in the interactive mode

作为一种解决办法,可以添加-i交互式开关,或使用链接讨论中的其他技巧。对于此示例,这将是:

代码语言:javascript
复制
bash -i -c "source ~/.bashrc && pyenv activate foo"

或者,您可以在激活步骤之前运行设置pyenv的相关命令(您可以在.bashrc中找到它们)。对我来说,这是:

代码语言:javascript
复制
bash -c "\
export PATH="/home/krassowski/.pyenv/bin:$PATH" &&\
eval "$(pyenv init -)" && \
eval "$(pyenv virtualenv-init -)" && \
pyenv activate foo"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40330039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档