Python 3.x 在Ubuntu docker-egl#u rpi-ImportError上运行Kivy hello world:无法导入名称';车身控制模块';
DockerfilePython 3.x 在Ubuntu docker-egl#u rpi-ImportError上运行Kivy hello world:无法导入名称';车身控制模块';,python-3.x,docker,kivy,Python 3.x,Docker,Kivy,Dockerfile #Main docker image FROM ubuntu:18.04 # Install necessary system packages RUN apt-get update RUN apt-get install -y \ python3-pip \ build-essential \ git \ python3.7 \ python3-dev \ ffmpeg \ libsdl2-dev \ li
#Main docker image
FROM ubuntu:18.04
# Install necessary system packages
RUN apt-get update
RUN apt-get install -y \
python3-pip \
build-essential \
git \
python3.7 \
python3-dev \
ffmpeg \
libsdl2-dev \
libsdl2-image-dev \
libsdl2-mixer-dev \
libsdl2-ttf-dev \
libportmidi-dev \
libswscale-dev \
libavformat-dev \
libavcodec-dev \
zlib1g-dev \
pkg-config \
libmtdev1
# Install gstreamer for audio, video (optional)
RUN apt-get install -y \
libgstreamer1.0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good
ADD ./requirements.pip requirements.pip
RUN pip3 install -r requirements.pip
ENTRYPOINT ["tail", "-f", "/dev/null"]
version: '3'
services:
webserver:
build:
context: .
dockerfile: Dockerfile
image: name
container_name: name
docker compose
#Main docker image
FROM ubuntu:18.04
# Install necessary system packages
RUN apt-get update
RUN apt-get install -y \
python3-pip \
build-essential \
git \
python3.7 \
python3-dev \
ffmpeg \
libsdl2-dev \
libsdl2-image-dev \
libsdl2-mixer-dev \
libsdl2-ttf-dev \
libportmidi-dev \
libswscale-dev \
libavformat-dev \
libavcodec-dev \
zlib1g-dev \
pkg-config \
libmtdev1
# Install gstreamer for audio, video (optional)
RUN apt-get install -y \
libgstreamer1.0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good
ADD ./requirements.pip requirements.pip
RUN pip3 install -r requirements.pip
ENTRYPOINT ["tail", "-f", "/dev/null"]
version: '3'
services:
webserver:
build:
context: .
dockerfile: Dockerfile
image: name
container_name: name
要求。pip
cython==0.29.9
kivy==1.11.1
要测试的主代码
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
def build(self):
return Button(text='Hello World')
TestApp().run()
错误
error: XDG_RUNTIME_DIR not set in the environment.
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
egl_rpi - ImportError: cannot import name 'bcm'
File "/usr/local/lib/python3.6/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
fromlist=[modulename], level=0)
File "/usr/local/lib/python3.6/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
from kivy.lib.vidcore_lite import bcm, egl
sdl2 - RuntimeError: b'No available video device'
File "/usr/local/lib/python3.6/dist-packages/kivy/core/__init__.py", line 71, in core_select_lib
cls = cls()
File "/usr/local/lib/python3.6/dist-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
super(WindowSDL, self).__init__()
File "/usr/local/lib/python3.6/dist-packages/kivy/core/window/__init__.py", line 981, in __init__
self.create_window()
File "/usr/local/lib/python3.6/dist-packages/kivy/core/window/window_sdl2.py", line 290, in create_window
self.get_gl_backend_name())
File "kivy/core/window/_window_sdl2.pyx", line 110, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
File "kivy/core/window/_window_sdl2.pyx", line 74, in kivy.core.window._window_sdl2._WindowSDL2Storage.die
x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
File "/usr/local/lib/python3.6/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
fromlist=[modulename], level=0)
[CRITICAL] [App ] Unable to get a Window, abort.
错误:环境中未设置XDG\U运行时\U目录。
[关键][窗口]找不到任何有价值的窗口提供程序。请启用调试日志记录(例如,如果从命令行运行,请添加-d,或者在配置中更改日志级别),然后重新运行应用程序以确定潜在原因
egl_rpi-导入错误:无法导入名称“bcm”
文件“/usr/local/lib/python3.6/dist packages/kivy/core/_init__.py”,第63行,在core\u select\u lib中
fromlist=[modulename],级别=0)
文件“/usr/local/lib/python3.6/dist packages/kivy/core/window/window\u egl\u rpi.py”,第12行,在
从kivy.lib.vidcore_lite导入bcm,egl
sdl2-运行时错误:b“没有可用的视频设备”
文件“/usr/local/lib/python3.6/dist packages/kivy/core/_init__.py”,第71行,在core\u select\u lib中
cls=cls()
文件“/usr/local/lib/python3.6/dist packages/kivy/core/window/window\u sdl2.py”,第152行,在__
超级(WindowSDL,self)。\uuuuu init\uuuuuuu()
文件“/usr/local/lib/python3.6/dist-packages/kivy/core/window/__-init__.py”,第981行,在_-init中__
self.create_window()
文件“/usr/local/lib/python3.6/dist packages/kivy/core/window/window\u sdl2.py”,第290行,在create\u窗口中
self.get\u gl\u backend\u name())
文件“kivy/core/window/_window_sdl2.pyx”,第110行,在kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window中
文件“kivy/core/window/_window_sdl2.pyx”,第74行,在kivy.core.window._window_sdl2._WindowSDL2Storage.die中
x11-ModuleNotFoundError:没有名为'kivy.core.window.window_x11'的模块
文件“/usr/local/lib/python3.6/dist packages/kivy/core/_init__.py”,第63行,在core\u select\u lib中
fromlist=[modulename],级别=0)
[关键][应用]无法获取窗口,中止。
我只找到了一些关于
ubuntu
的参考资料,上面说要安装libsdl2 image dev
,但正如你看到的那样,我已经在安装它了。Dockerfile不能产生错误消息:它是硬连接的,不能以很难覆盖的方式执行任何操作。您是如何启动该应用程序的?Docker中的图形应用程序充其量是棘手和挑剔的,您最好在没有Docker的Python虚拟环境中运行它。我想问题是在尝试启动刹车应用程序的图形界面时。为应用程序提供一个隔离的环境是一个好的做法?类似于conda?Python打包用户指南pipfile,但是任何基于Python虚拟环境的东西都可以很好地工作。是的,但我指的是可以在笔记本电脑之间轻松共享的东西,比如刚刚运行的dockerfile及其工作包