我很抱歉,因为我是一个彻头彻尾的 Linux 菜鸟!我也问过这个问题这里,但我认为我最好将其移至专门的 Ubuntu 论坛:
我正在尝试使用OpenAI 健身房在 Ubuntu 中。在我第一次安装后,终端中的命令行从看起来像
user@localhost:~$
到
(gym) user@localhost:~$
我可以执行如下文件
(gym) user@localhost:/mnt/e/MyOpenAIstuff$ python script.py
这需要健身模块。
现在,当我再次启动终端时,它处于 状态user@localhost:~$
,当我尝试运行脚本时,它无法识别gym
模块,并提示ModuleNotFoundError: No module named 'gym'
。我怀疑我需要发出一些命令让终端重新进入
(gym) user@localhost:~$
在我的脚本中使用 gym 之前的状态。我应该使用什么命令来进入这样的模块状态?
附言:
到目前为止我尝试添加
export GYM_PATH="/home/user/gym/bin:$GYM_PATH"
并.bashrc
致电source ~/.bashrc
,但不幸的是,这并没有解决问题。
编辑:
此时我发现我必须这样做export GYM_PATH="/home/user/gym:$GYM_PATH"
,但随后我收到一个错误,提示缺少某些环境依赖项。
然后我再次运行安装命令pip install -e '.[all]'
,它实际上安装了一些组件(不知道为什么第一次安装后它们不存在)。
如果我现在尝试运行该脚本,仍然会出现错误:
[2018-01-03 11:43:39,443] 创建新环境:BreakoutDeterministic-v4
回溯(最近一次调用最后一次):
文件“envi.py”,第 11 行,在 env.render() 中
...
...
...
文件“/home/UNIXuser/anaconda3/lib/python3.6/site-packages/pyglet/canvas/在里面.py”, 第 82 行, 在 get_display 返回 Display()
文件“/home/UNIXuser/anaconda3/lib/python3.6/site-packages/pyglet/canvas/xlib.py”,第 86 行,位于在里面 引发 NoSuchDisplayException('无法连接到“%s”'%名称)pyglet.canvas.xlib.NoSuchDisplayException:无法连接到“None”
抱歉,这很快就会进入健身房本身的故障排除,而不是 Ubuntu。如果您此时有任何建议,我将不胜感激,但也许我现在应该向健身房的人询问此事……
答案1
导入 gym 模块的问题主要在于选择正确的安装目录。
由于安装方式如下
git clone https://github.com/openai/gym
cd gym
pip install -e '.[all]'
模块本身并不位于 中,~/gym
而是实际上位于 中~/gym/gym
。因此,要提供包含模块文件夹的文件夹路径,gym
我们必须使用:
/home/user/gym
不是/home/user
。
编辑:
另外,也可以这样做
source activate gym
让终端进入
(gym) user@localhost:~$
state,它将在您随后运行脚本时自动在正确的位置搜索所有依赖项。