子目录中的导入脚本不起作用... Blender Add-On
Posted
技术标签:
【中文标题】子目录中的导入脚本不起作用... Blender Add-On【英文标题】:Import script in sub directory not working... Blender Add-On 【发布时间】:2021-03-22 15:13:35 【问题描述】:我有一个这样的文件夹结构:
C:
|_Blueprint
│ main.py
│
└───toolbox
blueprint_tools.py
当我在 Blender 的脚本文本页面中运行这段代码时:
from toolbox.blueprint_tools import dimension, array, modify
我在控制台中收到错误
Traceback (most recent call last): File "\main.py", line 20, in <module> ModuleNotFoundError: No module named 'toolbox' Error: Python script failed, check the message in the system console
我发誓,当我在 Blender 之外(在其他项目上)运行此代码时,此结构和代码运行良好。但是在 Blender 中运行此脚本以测试我的附加组件时出现错误。
如果我将 Blueprint 文件夹编译成 .zip 并安装它,一切正常...... ?? 我迷路了,谁能帮帮我。
如果我像这样运行代码:(在 CWD 工具箱之前添加一个 .)
from .toolbox.blueprint_tools import dimension, array, modify
Traceback (most recent call last): File "\main.py", line 20, in <module> ImportError: attempted relative import with no known parent package Error: Python script failed, check the message in the system console
【问题讨论】:
What should I do when someone answers my question? 【参考方案1】:你的两个错误跟踪都写File \main.py ...
,这意味着Blender认为你的main.py
文件在根文件夹中,知道它在文件系统层次结构中的真实位置。
当您将结构安装为 zip 文件时,您向 Blender 提供了所有必要的信息。
附录:
暂时,在开发/调试您的插件期间,您可以将完整路径(用于查找您的toolbox.blueprint_tools
模块)添加到sys.path
变量中。
有两种可能:
将这些命令插入到您的main.py
文件中(当然,使用toolbox
文件夹的您的 父 文件夹的路径):
import sys
sys.path += [r"C:\Users\Davi\Documents\Python\PARENT_of_toolbox"]
之前你的陈述
from toolbox.blueprint_tools import dimension, array, modify
命令,或
将这些命令插入到您的main.py
文件中(当然,使用您的 toolbox
文件夹的路径):
import sys
sys.path += [r"C:\Users\Davi\Documents\Python\PARENT_of_toolbox\toolbox"]
之前您的修改声明
from blueprint_tools import dimension, array, modify
【讨论】:
谢谢您,您的回答很有道理。但我想唯一剩下的就是如何为 Blender 提供在 Blender 中运行我的脚本以进行测试所需的所有信息? 使用压缩文件,就像你已经做的那样。您可以在Blender StackExchange 中找到有关 Blender 特定问题的更多信息。也许 [这个答案](使用 zip 文件,就像你已经做过的那样。你可以在 Blender StackExchange 中找到有关 Blender 特定问题的更多信息。也许 this answer。 再次感谢,不得不编译一个 zip 并安装它只是为了看到我对附加组件所做的一个小改动,只是为了进行新的更改,并且必须卸载重新编译并重试,这真是太可怕了……你明白我的意思。这个疯狂的东西可以作为 zip 安装,但不能作为在 Blenders 脚本面板中运行的 python.py 文件。 MarianD 非常感谢。明天早上我会试一试,然后报告。感谢您的帮助。以上是关于子目录中的导入脚本不起作用... Blender Add-On的主要内容,如果未能解决你的问题,请参考以下文章
Blender 3D python为每个姿势骨骼添加一个约束不起作用