如何在che7工作区中导入python模块

时间:2019-09-04 19:42:01

标签: eclipse-che

在Che7中,我创建了一个使用我构建的自定义docker映像的工作区。该docker映像已安装Python3.7,并通过pip安装了名为Pyomo的第三方模块。工作区正常启动,如果我在该图像中打开终端,可以看到已安装Pyomo,但是在运行时我无法将模块导入到我的python代码中。

我试图确定devfile中包含的dockerimage和Python运行时环境之间的区别。我注意到的是,在其下执行python的用户是'theia',因此在运行时我可以打印出/ home / theia目录的内容,但是如果我有一个终端打开我创建的图像,则可以没有theia用户。

我尝试从我的python脚本安装模块,但是失败,因为我没有权限。 (我并不是真的想这样做,因为它感觉有点黑。我宁愿弄清楚工作区的正确配置)

下面是我必须在安装Pyomo的情况下创建映像的docker文件。

FROM    <my-ubuntu-image>

RUN     sudo apt-get purge -y python.* && \
        sudo apt autoremove -y && \
        sudo apt-get update && \
        sudo apt-get install -y --no-install-recommends \
        autoconf \
        automake \
        bzip2 \
        file \
        g++ \
        gcc \
        imagemagick \
        libbz2-dev \
        libc6-dev \
        libcurl4-openssl-dev libdb-dev libevent-dev libffi-dev libgdbm-dev libgeoip-dev libglib2.0-dev libjpeg-dev \
        libkrb5-dev liblzma-dev libmagickcore-dev libmagickwand-dev libmysqlclient-dev libncurses-dev libpng-dev \
        libpq-dev libreadline-dev libsqlite3-dev libssl-dev libtool libwebp-dev libxml2-dev libxslt-dev libyaml-dev make patch xz-utils zlib1g-dev
ENV     LANG=C.UTF-8
ENV     PYTHON_VERSION=3.7.4
ENV     PYTHON_PIP_VERSION=19.2.3
RUN     set -ex && \
        sudo curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz && \
        sudo curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc && \
        export GNUPGHOME="$(mktemp -d)" && \
        sudo rm -r "$GNUPGHOME" python.tar.xz.asc && \
        sudo mkdir -p /usr/src/python && \
        sudo tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz && \
        sudo rm python.tar.xz && \
        cd /usr/src/python && \
        sudo ./configure --enable-shared --enable-unicode=ucs4 && \
        sudo make -j$(nproc) && \
        sudo make install && \
        sudo ldconfig && \
        sudo pip3 install --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION && \
        sudo pip3 install pyomo && \
        sudo find /usr/local \( -type d -a -name test -o -name tests \) -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) -exec rm -rf '{}' + && \
        sudo rm -rf /usr/src/python
RUN     cd /usr/local/bin && \ 
        sudo ln -s easy_install-3.7 easy_install && \
        sudo ln -s idle3 idle && \
        sudo ln -s pydoc3 pydoc && \
        sudo ln -s python3 python && \
        sudo ln -s python-config3 python-config
RUN     sudo pip3 install --upgrade pip && \
        sudo pip3 install --no-cache-dir virtualenv && \
        sudo pip3 install --upgrade setuptools && \
        sudo pip3 install 'python-language-server[all]'
EXPOSE  8080

成功构建此docker映像后,我将创建一个工作区,并且devfile在下面

metadata:
  name: Pyomo
projects:
  - name: python-hello-world
    source:
      location: 'https://github.com/che-samples/python-hello-world.git'
      type: git
      branch: master
components:
  - id: ms-python/python/latest
    memoryLimit: 512Mi
    type: chePlugin
  - mountSources: true
    memoryLimit: 512Mi
    type: dockerimage
    alias: pyomo
    image: '<my-Pyomo-image>'
apiVersion: 1.0.0
commands:
  - name: run
    actions:
      - workdir: '${CHE_PROJECTS_ROOT}/python-hello-world'
        type: exec
        command: python hello-world.py
        component: python

工作空间成功打开后,以下内容将无法工作

import pyomo

我的期望是,由于在docker映像中安装了Pyomo(或任何其他python模块),因此可以在Che Workspace中进行编码。

0 个答案:

没有答案