Instalar Panda 3d motor de juego, ayuda en español

Imagen de Martin Artaza
0 puntos

Hola que tal, foro de Ubuntu.

Estoy tratando de instalar Panda3D un motor de juegos, sigo los pasos de la pagina oficial
http://www.panda3d.org/download.php?platform=ubuntu&version=1.0.0&runtime

Una vez que instalo, trato de probarlo como dice en la pagina:

http://www.panda3d.org/wiki/index.php/Installing_Panda_in_Linux

y me sale un error comentado en la misma pagina pero sin solución puntual

ImportError: No module named direct.directbase.DirectStart

Para ver que versión de python tengo instalado, corro un programa que tiene el siguiente codigo

import sys
print sys.path

corro el programa y me sale lo siguiente

['/home/martin/programaci\xc3\xb3n/python', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages']

Supuestamente despues de hacer la instalación de panda, debería tener ahí una librería panda3d, pero no está, parece que falta decirle a python donde buscar panda3d.

Haciendo un whereis panda3d me sale

panda3d: /usr/bin/panda3d /usr/lib/panda3d /usr/include/panda3d /usr/share/panda3d

Bueno, querido foro hasta aquí llego hoy, no se me ocurre que hacer, tal vez después de unos mates pueda ver que hago, nos estamos viendo. espero respuesta.

Imagen de hipersayan_x
+1
0
-1

Proba importando las carpetas entes de importar los modulos de panda3D

import sys

# Las carpetas donde se supone que estan las librerias de panda.
folders = ['/usr/bin/panda3d', '/usr/lib/panda3d', '/usr/include/panda3d', '/usr/share/panda3d']

for folder in folders:       # Cada carpeta de panda
    if not path in sys.path:
        sys.path += [path]   # la agregamos a la lista de rutas
                             # a buscar modulos de python.

# Finalmente importas panda
import direct.directbase.DirectStart

# resto del codigo.
# ...
+1
0
-1
Imagen de Martin Artaza
+1
0
-1

Me tira el siguiente error:

Traceback (most recent call last):
File "importarcarpetas.py", line 7, in
if not path in sys.path:
NameError: name 'path' is not defined

como no se que tipo de datos es path, no se como definirlo previamente, pero entiendo lo que quieres hacer, puedo agregar las rutas manualmente desde la linea de comando?

Voy a tratar de hacer eso con la que me distes.

Muchas gracias.

Aquel que duda y no investiga, no solo se torna infeliz sino tambien injusto.

+1
0
-1

Aquel que duda y no investiga, no solo se torna infeliz sino también injusto.

Imagen de Martin Artaza
+1
0
-1

Estaba por modificar los path a mano pero modifique el código por:

for folder in folders: # Cada carpeta de panda
if not folder in sys.path:
sys.path += [folder]

y funciono tu programa, vere si anda ahora el panda3d.

probando ....
...
...
ahh, lo codigo de ejemplos de panda no anda, pero tu código con la modificación que le hice y poniendo run() al final se me abre una ventana. Parece que funca, hago varias pruebas y te informo a la tarde.

!!!!!!!!!!!!!!!!!!!MUCHISIMAS GRACIAS¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Aquel que duda y no investiga, no solo se torna infeliz sino también injusto.

+1
0
-1

Aquel que duda y no investiga, no solo se torna infeliz sino también injusto.

Imagen de Martin Artaza
+1
0
-1

Hola, le agrego tu código con la modificación que le hice (una tontera mi aporte) a todos lo ejemplos y la mayoría anda, algunos me tiran otros error sobre el sonido, pero lo vere por aparte y si necesito posteare de nuevo con el problema puntual.

Vere que puedo hacer con esto ahora, muchas gracias.

Aquel que duda y no investiga, no solo se torna infeliz sino tambien injusto.

+1
0
-1

Aquel que duda y no investiga, no solo se torna infeliz sino también injusto.

Imagen de hipersayan_x
+1
0
-1

Cambie la palabra path por folder a ultimo momento, sonaba mas natural decir carpeta que ruta, y me olvide de hacer el resto de las modificaciones :P.
Pero, pudiste cargar algun grafico?

+1
0
-1
Imagen de Martin Artaza
+1
0
-1

Pero debo agregarle lo que vos me dijiste a los codigo, no vi como resolvervo despues me pondre hacer eso.

Muchisimas gracias.

Aquel que duda y no investiga, no solo se torna infeliz sino tambien injusto.

+1
0
-1

Aquel que duda y no investiga, no solo se torna infeliz sino también injusto.

Imagen de Eduardo Vinas
+1
0
-1

Buenas,

Veo que la solución aquí planteada busca indicar dinámicamente los directorios de los modulos de panda3d.

En las versiones de python actuales (tengo instalada la v2.7) no es necesario, ya que se puede utilizar los ficheros .pth para indicar la ruta de los módulos de los packages externos a utilizar en Python.

En la página de panda3d indica que este problema se soluciona creando un fichero panda3d.pth y colocandolo en la ruta de tu python, en el directorio "site-packages":

http://www.panda3d.org/manual/index.php/Installing_Panda3D_in_Linux

El fichero panda3d.pth tiene que contener la ruta de los modulos de panda3d.

Lo hice pero no funcionaba. Me extrañaba que el directorio "site-packages" estuviese vacío. Estuve buscando en la Python directamente, y encontré la solución leyendo la cabecera del fichero site,py que indica que para la distrubución Debian y sus derivados, no hay que utilizar "site-packages" sino "dist-packages". Lo coloqué ahí y problema solucionado. Ya encuentra los modulos de panda3d para importar.

Instrucciones más completas.
Comprobar la ruta de tu python, ejecutando el comando "python" sin opciones
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/pymodules/python2.7/gtk-2.0', '/usr/lib/panda3d', '/usr/lib64/panda3d', '/usr/include/panda3d', '/usr/share/panda3d', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/pymodules/python2.7/ubuntuone-client', '/usr/lib/pymodules/python2.7/ubuntuone-storage-protocol', '/usr/lib/pymodules/python2.7/ubuntuone-control-panel']
>>>

La salida obtenida es un poco extensa, porque tengo varias instalaciones de python,

En la ayuda de python para su instalación,

http://docs.python.org/install/index.html#platform-variations

indican que la ruta para las extensiones es:

extension modules exec-prefix/lib/pythonX.Y/site-packages

busco el "exec-prefix" donde se instaló python. Ejecuto de nuevo "python" sin opciones y
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.exec_prefix
'/usr'
>>>

Pulsar Ctrl+D para salir y comprobar la versión de tu python con la opción "--version"
$ python --version
Python 2.7.1+

Por lo tanto, la ruta de my python es
/usr/lib/python2.7/
Y ahí tiene que existir el directorio "dist-packages" que necesito (nota: en Debian y sus derivados, pej. Ubuntu, no se utiliza el directorio "site-packages" para los ficheros .pth que se indica la ayuda de panda3d).

Por lo tanto, queda crear un fichero con las rutas de los ejecutables de panda3d. Supongo que habrá varias formas, pero se me ocurre
$whereis panda3d > panda3d.pth
Le das formato (hay que poner cada ruta en una línea, python no va a leer las líneas en blanco) y lo copias en la ruta
/usr/lib/python2.7/dist-packages

Con ello, evitarás tener que cargar los modulos manualmente con el script que habéis definido en la respuesta a este post.

Hope it helps!

+1
0
-1