Problema de instalación de Debian Jessie y derivados

En otra maquina que tiene Debian Jessie tambien intente instalar pilasengine compilandolo como indica el manual de en github, compilando mnualmente box2d como se indica en este manual y veo que me sigue saliendo el mismo error, justo despues del comando:

python setup.py build

Using setuptools (version 0.6).
running build
running build_py
copying library/Box2D/__init__.py -> build/lib.linux-x86_64-2.7/Box2D
running build_ext
building 'Box2D._Box2D' extension
swigging Box2D/Box2D.i to Box2D/Box2D_wrap.cpp
swig -python -c++ -IBox2D -small -O -includeall -ignoremissing -w201 -globals b2Globals -outdir library/Box2D -keyword -w511 -D_SWIG_KWARGS -o Box2D/Box2D_wrap.cpp Box2D/Box2D.i
Box2D/Box2D_joints.i:506: Error: Unknown SWIG preprocessor directive: Some (if this is a block of target language code, delimit it with %{ and %})
Box2D/Box2D_joints.i:507: Error: Unknown SWIG preprocessor directive: have (if this is a block of target language code, delimit it with %{ and %})
Box2D/Box2D_joints.i:526: Error: Unknown SWIG preprocessor directive: Ratio (if this is a block of target language code, delimit it with %{ and %})
error: command 'swig' failed with exit status 1

Me doy cuenta que tiene conflictos con swig pero tambien tengo las versiones de swig y swig3.0, probe desinstalar una (swig) y dejar solo swig3.0 por conflictos de versiones y viceversa pero nada sigue saliendo este error

Using setuptools (version 0.6).
running build
running build_py
copying library/Box2D/init.py -> build/lib.linux-x86_64-2.7/Box2D
running build_ext
building ‘Box2D._Box2D’ extension
swigging Box2D/Box2D.i to Box2D/Box2D_wrap.cpp
swig -python -c++ -IBox2D -small -O -includeall -ignoremissing -w201 -globals b2Globals -outdir library/Box2D -keyword -w511 -D_SWIG_KWARGS -o Box2D/Box2D_wrap.cpp Box2D/Box2D.i
unable to execute ‘swig’: No such file or directory
error: command ‘swig’ failed with exit status 1

No lo puedo instalar en debian strecht (9)

jose@debian64:~/Programas$ pilas engine
Traceback (most recent call last):
File “/usr/bin/pilas”, line 6, in
import pilasengine
File “/usr/lib/python2.7/dist-packages/pilasengine/init.py”, line 23, in
import escenas
File “/usr/lib/python2.7/dist-packages/pilasengine/escenas/init.py”, line 12, in
from pilasengine.escenas.normal import Normal
File “/usr/lib/python2.7/dist-packages/pilasengine/escenas/normal.py”, line 7, in
from pilasengine.escenas.escena import Escena
File “/usr/lib/python2.7/dist-packages/pilasengine/escenas/escena.py”, line 14, in
from pilasengine.fisica import Fisica
File “/usr/lib/python2.7/dist-packages/pilasengine/fisica/init.py”, line 9, in
from pilasengine.fisica.contact_listener import ObjetosContactListener
File “/usr/lib/python2.7/dist-packages/pilasengine/fisica/contact_listener.py”, line 9, in
import Box2D as box2d
File “/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg/Box2D/init.py”, line 20, in
from .Box2D import *
File “/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg/Box2D/Box2D.py”, line 435, in
_Box2D.RAND_LIMIT_swigconstant(_Box2D)
AttributeError: ‘module’ object has no attribute ‘RAND_LIMIT_swigconstant’

Hola @josegon !!

Recién me instalé un debian 9.3 (Stretch) y me topé con el mismo error que mencionas.

El problema se produce porque se termina instalando box2d 2.3.2 cuando en realidad debería instalarse la versión 2.3.1

Para resolverlo, tendrías que ejecutar estos comandos:

git clone https://github.com/pybox2d/pybox2d -b 2.3.1
cd pybox2d
python setup.py build
sudo python setup.py install

Eso si, justo después de corregir eso también noté que en debian actualizaron pyqt4 , quitando un módulo llamado webkit (que usa pilas).

Así que vas a tener que ejecutar otros comandos para instalar pyqt con soporte para tener este modulo webkit:

sudo su
echo "deb http://archive.ubuntu.com/ubuntu/ xenial universe" >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list
apt-get update
apt-get install python-qt4=4.11.4+dfsg-1build4 python-qt4-gl=4.11.4+dfsg-1build4 python-qt4-phonon=4.11.4+dfsg-1build4
apt-mark hold python-qt4 python-qt4-gl python-qt4-phonon
exit

y con eso deberías poder clonar e iniciar pilas correctamente:

git clone http://github.com/hugoruscitti/pilas.git
cd pilas
python bin/pilasengine

O bien, ejecutar esto para instalarlo completamente en tu equipo:

python setup.py build
sudo python setup.py install

Mil disculpas por los contratiempos… avisanos si te funciona correctamente siguiendo estos pasos.

Excelente solución, lo acabo de probar en Debian Stretch y funciona de maravilla. Sugiero incluir estos datos en el tutorial de instalación en GitHub

De cierta forma es una respuesta mi estimado @hugoruscitti pero cuando intentas actualizar nuevamente tu sistema operativo este se rompe y no permite actualizar, por lo que es necesario comentar los repos de ubuntu

echo "deb http://archive.ubuntu.com/ubuntu/ xenial universe" >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list

y al actualizar

apt-get update

se borra pilasengine. He intentado actualizar normalmente debian despues de este paso pero suele salir este error.

statick@debian:~/pilas/$ pilasengine
Traceback (most recent call last):
  File "/usr/local/bin/pilasengine", line 4, in <module>
    __import__('pkg_resources').run_script('pilas==1.4.12', 'pilasengine')
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 739, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1494, in run_script
    exec(code, namespace, namespace)
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.12-py2.7.egg/EGG-INFO/scripts/pilasengine", line 6, in <module>
    import pilasengine
  File "./pilasengine/__init__.py", line 23, in <module>
    import escenas
  File "./pilasengine/escenas/__init__.py", line 12, in <module>
    from pilasengine.escenas.normal import Normal
  File "./pilasengine/escenas/normal.py", line 7, in <module>
    from pilasengine.escenas.escena import Escena
  File "./pilasengine/escenas/escena.py", line 14, in <module>
    from pilasengine.fisica import Fisica
  File "./pilasengine/fisica/__init__.py", line 9, in <module>
    from pilasengine.fisica.contact_listener import ObjetosContactListener
  File "./pilasengine/fisica/contact_listener.py", line 9, in <module>
    import Box2D as box2d
  File "/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg/Box2D/__init__.py", line 20, in <module>
    from .Box2D import *
  File "/usr/local/lib/python2.7/dist-packages/Box2D-2.3.2-py2.7-linux-x86_64.egg/Box2D/Box2D.py", line 435, in <module>
    _Box2D.RAND_LIMIT_swigconstant(_Box2D)
AttributeError: 'module' object has no attribute 'RAND_LIMIT_swigconstant'

Es decir puedes tener pilasengine instalado pero el sistema es vulnerable por no estar actualizado ni poder hacerlo o puedes actualizar perdiendo por completo pilasengine. Trate con virtualenv pero el mismo problema.

Quizá pueda ser un inconveniente que se pueda solucionar actualizando las librerías de pilas a las actuales para que no se de este lío al compilar y ejecutar pilas

Momentaneamente la solución es volver a compilar pybox2d

cd pybox2d
python setup.py build
sudo python setup.py install

y ejecutar pilasengine desde la terminal de comandos ya que no crea un acceso al sistema de forma gráfica

Modifique un poco la guía de instalación en la wiki de github agregando estos pasos para la compilación de box2d 'b 2.3.1 en sistemas operativos GNU/Linux Debian y derivados.

Podrán encontrar la información en este link: