Kal*_*sar 5 python ubuntu virtualenv docker pyenv
我正在尝试在Dockerfile(FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04)中安装和设置pyenv
这是Dockerfile的后半部分(前半部分只是安装依赖项):
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'
Run Code Online (Sandbox Code Playgroud)
Docker安装最后一行失败:
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.
Run Code Online (Sandbox Code Playgroud)
这里有什么问题 ?是否有使用Docker设置pyenvs的最佳实践?
最有可能的source .bashrc是你的被忽略(因此默认的 pyenv 设置不会继续),因为 bashrc 通常被配置为如果不在交互模式下则中止。
作为解决方法,添加-i交互式开关,或使用链接讨论中的其他技巧。对于这个例子,这将是:
bash -i -c "source ~/.bashrc && pyenv activate foo"
Run Code Online (Sandbox Code Playgroud)
.bashrc或者,您可以在激活步骤之前运行设置 pyenv 的相关命令(您将在您的 中找到它们)。对我来说这将是:
bash -c "\
export PATH="/home/krassowski/.pyenv/bin:$PATH" &&\
eval "$(pyenv init -)" && \
eval "$(pyenv virtualenv-init -)" && \
pyenv activate foo"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |