我想玩OpenAI健身房的月球着陆器env。
为了运行这段代码,我需要安装Box2d,这就是我出现问题的地方。 我正在使用带有conda 4.3.21和python 3.6的ubuntu 16.04。 当我尝试运行环境时,我收到错误:ModuleNotFoundError:没有名为' _Box2D'
的模块所以我尝试了直接安装pybox2d: https://github.com/pybox2d/pybox2d/blob/master/INSTALL.md 产生了相同的错误消息。
然后我尝试按照https://github.com/cbfinn/gps/issues/34
中列出的方式从GitHub安装$git clone https://github.com/pybox2d/pybox2d pybox2d_dev
$cd pybox2d_dev
$python setup.py build
$sudo python setup.py install
如果我运行它(在具有python 3的root环境或python 3的另一个新创建的环境中),我得到结果:
很多处理日志 处理Box2D-2.3.2-py2.7-linux-x86_64.egg 创建/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg 将Box2D-2.3.2-py2.7-linux-x86_64.egg解压缩到/usr/local/lib/python2.7/dist-packages 将Box2D 2.3.2添加到easy-install.pth文件
已安装/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg 处理Box2D的依赖关系== 2.3.2 Box2D的完成处理依赖关系== 2.3.2
因此pybox2d安装在ubuntu的标准python 2的lib中,尽管它处于python 3 conda环境中。
所以,我正在寻找使用conda 4.3.21
为python 3安装pybox2d软件包的方法答案 0 :(得分:1)
从Box2D
安装pip
导致我在尝试导入here时遇到错误。正如该GitHub问题中所建议的,这是在Python 3.6上对我有用的东西:
conda install swig # needed to build Box2D in the pip install
pip install box2d-py # a repackaged version of pybox2d
答案 1 :(得分:1)
sudo apt-get install swig
pip install pybox2d
答案 2 :(得分:0)
您需要激活您的环境:
source activate my_env_name
然后提示更改为:
(my_env_name)
现在,使用pip
安装,不使用sudo
:
pip install pybox2d
答案 3 :(得分:0)
嘿,这个问题看起来很老了,但是似乎没有人在任何地方都给出正确的答案,所以只写这个。
在Linux命令中遵循以下两行 $ sudo apt-get install build-essential python-dev swig python-pygame $ pip安装Box2D
许多人都想运行基于Box2D的体育馆,但这就像Mujoco系列体育馆envs一样必须自己安装。
许多人使用python 3.6,但是安装Box2D的最简单方法是 $ conda install -c kne pybox2d 不起作用,因为直到py3.5都维护了pybox2d
但是直接做 $ pip安装Box2D 无法解决问题。由于错误msg,该错误来自swig,但实际上并非如此。 $ sudo apt-get install build-essential python-dev swig python-pygame 这条线总能一口气解决所有问题。
我一直在基于Box2D envs进行研究,但是每次将其安装在新的env中时,仍然会感到困惑,所以对我来说也是这样
贡献:https://github.com/jonasschneider/box2d-py/blob/master/INSTALL.md
顺便说一句,不要忘记仔细检查它是否正确安装。 在linux命令中
$ python --version
python 3.6. sthsth
$ python
>>> import numpy as np
>>> import gym
>>> env = gym.make('BipedalWalker-v2')
# If it does not give you error, then it's done!