Отображение главного компьютера с помощью Tkinter Из приложения python, запускаемого в Docker - PullRequest
0 голосов
/ 14 мая 2018

Прежде всего, я новичок в информатике, и я француз, я надеюсь, что вы получите то, что я пытаюсь сделать здесь ... Извините, это немного долго:

Контекст: я пытаюсь построить конвейер. Этот конвейер состоит из 2 этапов, первый из которых запускает инструмент под названием DeCoSTAR (это исполняемый файл, корзина?) Для набора файлов входных параметров. Следующая часть запускает приложение python (которое я сделал) поверх выходных файлов DeCoSTAR. Я хочу, чтобы этот конвейер был удобным и переносимым, он должен работать на любой ОС, установленной пользователем хоста.

Для этого я пытаюсь использовать Docker.

Теперь для первого этапа я создал свой собственный Dockerfile, основанный на python-alpine образе:

FROM    python:2.7-alpine3.7

MAINTAINER  *********

COPY    ./DeCoSTAR  /bin/DeCoSTAR

COPY ./DeCoSTAR.py      ./DeCoSTAR.py

DeCoSTAR.py - это способ запустить исполняемый файл DeCoSTAR для данного файл параметров (который будет на главном компьютере). Для того, чтобы пользователь предоставил этот ввод, я использую Tkinter:

#!/usr/bin/python2.7
#coding:utf8

from Tkinter import Tk
from tkFileDialog import askopenfilename
import subprocess
from subprocess import call

def main ():

    print ("Entrez un fichier paramètre:")
    Tk().withdraw() 
    param_file=askopenfilename()
    f= "/bin/DeCoSTAR parameter.file="+param_file    

    subprocess.call(f, shell=True)                       


if __name__=="__main__":
    main()

Теперь дело обстоит так:

  • Я не могу понять, как автоматически запустить DeCoSTAR.py Когда я запускаю мой образ, он работает на python2.7. Я пытался RUN DeCoSTAR.py, но это не работает.

  • Я использую команду exec в Docker, чтобы попытаться все равно работать. Запускаю python DeCoSTAR.py Я получил это:

    tkinter.TclError: без отображаемого имени и без переменной среды $ DISPLAY

Мне нужно отобразить хост-компьютер, чтобы он или она могли подобрать и предоставить собственный файл параметров. Я не хочу, чтобы он отображал файл контейнера, поэтому я думаю, что он не работает.

... помощь?

1 Ответ

0 голосов
/ 15 мая 2018

Во-первых, чтобы запустить скрипт Python в Docker, необходимо сделать это следующим образом:

RUN python DeCoSTAR.py

Во-вторых, для вашей ошибки $DISPLAY сначала необходимо указать отображение в Docker вЧтобы использовать приложение с графическим интерфейсом.Обычно это можно сделать, добавив

-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw 

к docker run.

Вероятно этот вопрос может помочь вам, если у вас есть проблемы с настройкой докера для использования приложения с графическим интерфейсом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...