Deepmind Lab官方教程https://github.com/deepmind/lab
1、安装Bazel
官方介绍https://docs.bazel.build/versions/master/install-ubuntu.html
(1)安装所需要的包
sudo apt install g++ unzip zip
安装JDK
sudo apt-get install openjdk-8-jdk
(2)运行安装程序
- 下载bazel--installer-linux-x86_64.sh
- 修改读写权限
chmod +x bazel-<version>-installer-linux-x86_64.sh
- 安装
./bazel-<version>-installer-linux-x86_64.sh --user
(3)设置环境
vi ~/.bashrc
在最后添加export PATH="$PATH:$HOME/bin"
(如果已自动添加则省略)
(4)测试
bazel安装成功
2、安装DeepMind Lab的依赖项
sudo apt-get install libffi-dev gettext freeglut3-dev libsdl2-dev zip libosmesa6-dev python-dev python-numpy python-pil python3-dev python3-numpy python3-pil
3、下载DeepMind Lab
https://github.com/deepmind/lab
4、配置python.BUILD
,否则运行gcc可能报错
- 查看python位置
import numpy as np
print(np.get_include())
- 将 lab/bazel 文件夹下的
python.BUILD
内容全部替换
cc_library(
name = "python",
hdrs = select(
{
"@bazel_tools//tools/python:PY2": glob([
"include/python2.7/*.h",
"lib64/python2.7/site-packages/numpy/core/include/**/*.h",
]),
"@bazel_tools//tools/python:PY3": glob([
"include/python3.6m/*.h",
"lib64/python3.6/site-packages/numpy/core/include/**/*.h",
]),
},
no_match_error = "Internal error, Python version should be one of PY2 or PY3",
),
includes = select(
{
"@bazel_tools//tools/python:PY2": [
"include/python2.7",
"lib64/python2.7/site-packages/numpy/core/include",
],
"@bazel_tools//tools/python:PY3": [
"include/python3.6m",
"lib64/python3.6/site-packages/numpy/core/include",
],
},
no_match_error = "Internal error, Python version should be one of PY2 or PY3",
),
visibility = ["//visibility:public"],
)
注意如果第一步中查询的python位置lib后边没有64,则把上述代码中的64删去
- 修改 lab文件夹下
WORKSPACE
文件内容
将此处路径修改为第一步查询的python的路径/lib前的内容
我的python2和python3路径不一样,在test的时候路径会出问题,我就直接把python2的删了,我的python.BUILD
内容是
cc_library(
name = "python",
hdrs = glob([
"include/python3.6m/*.h",
"lib/python3.6/site-packages/numpy/core/include/**/*.h",
]),
includes = [
"include/python3.6m",
"lib/python3.6/site-packages/numpy/core/include",
],
visibility = ["//visibility:public"],
)
5、建立DeepMind Lab,随机运行
# Build the Python interface to DeepMind Lab
lab$ bazel build -c opt //:deepmind_lab.so
# Build and run the tests for it
lab$ bazel test -c opt //python/tests:python_module_test
# Run a random agent
lab$ bazel run -c opt //:python_random_agent
6、测试迷宫游戏的例子
bazel run :python_random_agent --define graphics=sdl -- \
--length=10000 --width=640 --height=480
(我也不知道为啥是反的。。。)
人工输入控制测试游戏
bazel run :game -- --level_script=tests/empty_room_test --level_setting=logToStdErr=true