子目录中的导入脚本不起作用...Blender 附加组件

Import script in sub directory not working... Blender Add-On

我有这样的文件夹结构:

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

你的两个错误跟踪都写 File \main.py ... 这意味着 Blender 认为你的 main.py 文件位于根文件夹中,不知道它在文件系统层次结构中的真实位置。

当您将结构安装为 zip 文件时,您向 Blender 提供了所有必要的信息。


附录:

暂时,在开发/调试您的附加组件期间,您可以将 完整路径(用于查找您的 toolbox.blueprint_tools 模块)添加到 sys.path变量。

有两种可能性:


  1. 将这些命令插入到您的 main.py 文件中(使用 您的 parent 文件夹的路径当然是你的 toolbox 文件夹):

    import sys
    sys.path += [r"C:\Users\Davi\Documents\Python\PARENT_of_toolbox"]
    

    你的声明之前

    from toolbox.blueprint_tools import dimension, array, modify 
    

    命令,或


  1. 将这些命令插入到您的 main.py 文件中(当然,使用 您的 toolbox 文件夹的路径):

    import sys
    sys.path += [r"C:\Users\Davi\Documents\Python\PARENT_of_toolbox\toolbox"]
    

    你的修改声明之前

    from blueprint_tools import dimension, array, modify