14

作者17.20-17.50 点中提到,将来您可以使用标准 Python 解释器访问 BPY。它已经 1 岁了,那么如何使用标准 python 控制台访问 BPY?

试用 0:roundaround -解决方案不适用于 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)

试验 1:不在 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
4

9 回答 9

16

根据这些说明

获取搅拌机源代码:

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

注意依赖关系,如有必要,请参见此处*并通过bpy目标进行编译:

cd ~/src/blender
make bpy

file INSTALL cannot set permissions on [...]如果发生类似错误,(重新)以 root 身份运行后者

你的 python 3现在应该能够import bpy.


*对于 Debian-ish 系统运行

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
于 2012-06-19T14:03:49.757 回答
13

如果这仍然相关,您可以像这样在搅拌机的上下文中运行脚本(-b使其无头,因此您可以在没有 X11 的渲染服务器上运行它):

blender -b -P script.py

有关更多选项,请参阅blender --help

如果您想将搅拌机连接到 IPython 控制台,那么您可以通过 python 与搅拌机进行交互,您可以使用我刚刚编写的这个脚本:https ://github.com/panzi/blender_ipython

启动笔记本:

./blender_ipython.py notebook

启动 Qt 控制台:

./blender_ipython.py qtconsole
于 2014-11-21T01:42:01.007 回答
3

我使用eclipse在blender中开发。我发现一个很好的起点是 http://airplanes3d.net/pydev-000_e.xml

于 2012-06-28T00:34:10.800 回答
1

本文解释了如何将 blender 构建为 python 模块。

http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule

这种技术似乎不会将外部 python 会话连接到常规搅拌机进程,而是在 python 进程内运行搅拌机。

于 2014-04-04T20:01:07.007 回答
0

在您在该时间段发布的视频链接中,没有提到使用标准 python 解释器运行独立的搅拌机 python 脚本。您在视频中看到的是他们为 Blender 中内置的解释器打开了交互式控制台。

Blender 需要它自己的捆绑 python 环境,如果您要尝试使用标准 python 解释器运行脚本,则必须设置环境以包含 blender 包中的所有包。虽然它似乎甚至不可能,因为我认为 Blender 的 python 被修改了。

blender 可执行文件似乎允许您通过以下方式运行 python 脚本:
/path/to/blender -P cubes.py

您还可以通过以下方式从 bash shell 启动交互式控制台:
/path/to/blender --python-console

于 2012-06-10T23:52:30.000 回答
0

有人创建了一个存根 API 生成器。他甚至在 Github 上为 Blender 版本 2.78、2.79、2.80 托管了生成的 bpy。在 IDE 中编写代码应该足够了,例如 PyCharm。我在生成的代码中发现了一些语法错误。你必须修复它们。也有一个文件。

https://github.com/nutti/fake-bpy-module/tree/master/premade_modules/2.79

如果 Nutti 的文档有点短,这里是安装说明的网站。

https://b3d.interplanety.org/en/using-external-ide-pycharm-for-writing-blender-scripts/

要运行代码,您必须使用 Blender 的 Python,正如其他答案已经指出的那样。

blender -b -P script.py

对不起,关于链接唯一的答案。

于 2019-01-20T02:52:22.747 回答
0

我是编程新手,但我找到了一个简单的解决方法,我使用 os. 我的程序看起来有点像这样。

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

(那是我的搅拌机所在的地方)

然后我以与使用 cd 相同的方式使用终端命令。

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

于 2018-01-28T16:45:20.793 回答
0

您可以在blender的文本编辑器中运行任何编写的脚本,并在blender的python控制台中对其进行调试,方法如下:

1.创建您的脚本文件并将您的代码放在那里。

  1. 在搅拌机中打开控制台 python 并输入: bpy.data.texts[INDEX_OF_YOUR_FILE].as_module()

    INDEX_OF_YOUR_FILE 是文本编辑器中文本列表下拉菜单中文件的索引。

于 2020-12-02T22:14:11.813 回答
0

您可以使用搅拌机从命令行在后台运行/不运行 python 脚本。转到安装搅拌机的目录,在那里打开终端/cmd并输入以下命令 -

blender -b -P path/to/your/script.py 

该标志-b告诉搅拌机在后台运行。-P告诉使用搅拌机的 python 运行 python 脚本。如果要打开搅拌机的 GUI 并运行py脚本,请运行以下代码:

blender -P path/to/your/script.py

作为子进程运行时,使用以下代码:

import subprocess
subprocess.run(['blender', '-b', '-P', 'path/to/your/script.py'])
于 2021-08-20T07:27:04.293 回答