2012-06-10 29 views
7

El autor here en el punto 17.20-17.50 menciona que puede acceder a BPY con el intérprete estándar de Python en el futuro. Ya tiene 1 año de edad, entonces, ¿cómo puedo acceder al BPY con la consola de python estándar?¿Cómo puedo acceder a BPY en la consola de python estándar? BPY es el Blender-python -thing

Trial 0: roundaround solución al no trabajar con subproceso dentro de Blender

subprocess.call(['vim', 'test.py']) 
# some editing of BPY -file with Vim (not working currently) 
subprocess.call(['python', 'test.py']) 
# trying to execute the python -file (not working currently) 

Prueba 1: no trabajan fuera de Blender

$ cat cubes.py 
import bpy 

mylayers = [False]*20 
mylayers[0] = True 
add_cube = bpy.ops.mesh.primitive_cube_add 
for index in range(0, 5): 
    add_cube(location=(index*3, 0, 0), layers=mylayers) 
$ python cubes.py 
Traceback (most recent call last): 
    File "cubes.py", line 1, in <module> 
    import bpy 
ImportError: No module named bpy 
+0

¿Qué el primero tiene que ver con el segundo? ¿Está intentando editar 'test.py' con vim desde una llamada de subproceso y falla? – jdi

+0

Sí. y eso no funcionará – jdi

+0

... novato similar q [aquí] (http://avp.stackexchange.com/questions/4145/how-to-create-a-rolling-ball-with-python-in-blender) acerca de usando Blender-python, tratando de hacer una bola animada. – hhh

Respuesta

0

En el enlace de vídeo que publicado durante ese segmento de tiempo, no hay mención de ejecutar una combinación independiente er script python usando el intérprete estándar de python. Lo que está viendo en el video es que están levantando la consola interactiva para el intérprete integrado en Blender.

Blender requiere su propio entorno de python, y si intentara ejecutar un script usando un intérprete de python estándar, tendría que configurar el entorno para incluir todos los paquetes del paquete de mezcla. Aunque parece que probablemente ni siquiera sea posible, ya que creo que la pitón de Blender está modificada.

El ejecutable batidora parece permitirá ejecutar un script en Python, a través de:
/path/to/blender -P cubes.py

También puede iniciar una consola interactiva desde un shell bash a través de:
/path/to/blender --python-console

+0

¿Podría darnos una demostración con '/ path/to/blender --python-console' (sería útil algún archivo de historial con algún ejemplo simple), obtengo solo un área gris y puedo ver que los comandos funcionan y puedo importa bpy pero no puedo ver nada --- y puedo ver que está claramente modificado, 'exit()' no funciona ... – hhh

+0

@hhh: desafortunadamente no conozco la aplicación de la licuadora. Solo pude brindarte información sobre tu pregunta específica sobre por qué no puedes ejecutarla en una intervención estándar de Python. Es posible que desee buscar algunas muestras en Internet para conocer su API. Estoy seguro de que hay mucho. – jdi

+0

[Puedes compilar Blender como un módulo de Python 3] (http://stackoverflow.com/a/11102681/321973) –

12

Basado en these instructions:

obtener el código fuente de la licuadora:

cd ~/srC# or what you prefer 
git clone http://git.blender.org/blender.git 

cd blender 
git submodule update --init --recursive 
git submodule foreach git checkout master 
git submodule foreach git pull --rebase origin master 

Cuide las dependencias, consulte p. Ej. here si es necesario * y compilar a través del objetivo bpy:

cd ~/src/blender 
make bpy 

(re) ejecutar el último como root si se producen errores como file INSTALL cannot set permissions on [...]

Su pitón ahora debería ser capaz de import bpy.


* Para los sistemas Debian-ish ejecutar

sudo apt-get install subversion build-essential gettext \ 
libxi-dev libsndfile1-dev \ 
libpng12-dev libjpeg-dev libfftw3-dev \ 
libopenexr-dev libopenjpeg-dev \ 
libopenal-dev libalut-dev libvorbis-dev \ 
libglu1-mesa-dev libsdl1.2-dev libfreetype6-dev \ 
libtiff4-dev libavdevice-dev \ 
libavformat-dev libavutil-dev libavcodec-dev libjack-dev \ 
libswscale-dev libx264-dev libmp3lame-dev python3.2-dev \ 
libspnav-dev libtheora-dev libjack-dev libglew1.6-dev 
+0

Dispararme un montón de errores, más [aquí] (http://pastie.org/ 4550483). Después de instalarlo manualmente como me indicaste, encontré esto [aquí] (http://wiki.blender.org/index.php/Dev:2.5/Doc/Building_Blender/Linux/Ubuntu/CMake) pero tiene pkgs antiguos: el pastie ha actualizado pkgs pero aún hay errores, todavía no ha encontrado una solución para esto '" NO se pudo encontrar PythonLibsUnix (falta: PYTHON_LIBRARY PYTHON_INCLUDE_DIR) "'. Chat-discusión [aquí] (http://chat.stackoverflow.com/transcript/message/4994981#4994981). De todos modos +1 para tal vez una buena solución candidata, alerta experimental! – hhh

+0

Según [this] (http://blenderartists.org/forum/showthread.php?227153-How-to-build-Cycles&p=1924562&viewfull=1#post1924562), debe instalar 'python-devel'. También asegúrese de estar usando Python> = 3.2 –

+0

yup, [su 'apt-get'] (http://pastie.org/4550483) carece de' python3.2-dev', necesita instalar eso también (no es una dependencia de Python) –

3

utilizo Eclipse para desarrollar en la licuadora. Encontré un buen punto de partida para ser http://airplanes3d.net/pydev-000_e.xml

+1

Esto puede ser una solución para algunos usuarios +1, un enlace directo al Eclipse Blender [aquí] (http://airplanes3d.net/downloads/pydev/pydev-blender-en.pdf). A partir de la página 40, tal vez algo útil para algunos, de todos modos no responde la pregunta per se. – hhh

6

En caso de que esto sigue siendo relevante, puede ejecutar un script en el contexto de la licuadora como esto (la -b lo hace sin cabeza, de modo que se puede ejecutar en el servidor dejar sin X11):

blender -b -P script.py 

Para más opciones, vea blender --help.

Si desea conectar la licuadora a una consola IPython, para que pueda interactuar con el mezclador a través de pitón puede utilizar este script que acabo de escribir: https://github.com/panzi/blender_ipython

Iniciar un cuaderno:

./blender_ipython.py notebook 

Iniciar una consola de Qt:

./blender_ipython.py qtconsole 
0

soy nuevo en la programación, pero he encontrado una solución simple, he utilizado la línea de comandos para el terminal utiliza el OS. Mi programa se veía algo así.

import os 
os.system("cd /home/") 

(que es donde mi licuadora es)

y luego utilicé el comando terminal de la misma forma en que solía cd.

https://docs.blender.org/manual/en/dev/render/workflows/command_line.html

Cuestiones relacionadas