3

私は、このebook Programming Add-Ons for Blender 2.5の指示に従って、開発環境をセットアップしました。

現在、インストールされているBloop というアドオンをデバッグしようとしていますが、動作しているように見えますが、Eclipse には次のような多くのエラー メッセージが表示されます。

class Mapping(object):

    def __init__(self, joint=None, id=None, bone=None, other=None):
        ...
        self.bone_matrix = bpy.bloop.armature.matrix_world.inverted() * self.bone.bone.matrix_local.inverted()
                               ^^^^
                               ErrorMsg: Undefined variable from import: bloop

外部ライブラリは次のように構成されます。

ここに画像の説明を入力

Blenders のバージョンは 2.67 で、アドオンは 2.59 用に開発されました。Blender で Python を使用した経験はまったくありません。

別のタイプのエラーは次のとおりです。

Unresolved import: MappingSet   bloop.py

from .mapping_set import MappingSet

MappingSet は、インポートしようとする bloop.py と同じフォルダーにあります。

プロジェクトの構造は次のとおりです(その場で編集したいので、ソースフォルダーはありません)

ここに画像の説明を入力

私は何を間違っていますか?

少なくともエラー メッセージを抑制する回避策は、これらの行の最後で #@UnresolvedImport と #@UndefinedVariable を使用することです。

4

1 に答える 1

1

デバッグを別の方法でセットアップしますが、それでも lux-render チュートリアルに基づいています。

まず、.py ファイルを作成します。これを debug.py と呼びます。このファイルには、後でデバッグをセットアップするために呼び出す関数が含まれます。このファイルをモジュールのメインと同じフォルダーに配置し__init__.pyます。lux-renderer チュートリアルに従って、次のコードを追加して、PYDEV_SOURCE_DIR を更新します。

import sys

def startdebug():
    try:
        # set the PYDEV_SOURCE_DIR correctly before using the debugger
        PYDEV_SOURCE_DIR = 'C:\Program Files\eclipse\plugins\org.python.pydev.debug_2.5.0.2012040618\pysrc'

        # test if PYDEV_SOURCE_DIR already in sys.path, otherwise append it
        if sys.path.count(PYDEV_SOURCE_DIR) < 1:
            sys.path.append(PYDEV_SOURCE_DIR)

        # import pydevd module
        import pydevd

        # set debugging enabled
        pydevd.settrace(None, True, True, 5678, False, False)
    except:
        pass

PYDEV_SOURCE_DIR を設定するときは、必ず org.python.pydev.debug_xxxxx を指すようにしてください。これに似た別のフォルダがあります。正しいフォルダーがあることを確認するために、/pysrc フォルダーが含まれます。

main__init__.pyでは、正しく機能するために、これを他の import ステートメントの前に置く必要があります。奇妙なことにblenderがこれ自体を解析するため、bl_infoセクションのすぐ下に次を追加します。

DEBUGGING = True
if(DEBUGGING):
    import debug
    debug.startdebug()

ここに置くことで、lux-render チュートリアルのようにファイルごとのトレースを追加する必要がなくなります。

  1. アドオン フォルダー内のバージョンにブレークポイントを追加し、
  2. デバッグパースペクティブに切り替え、
  3. Eclipses デバッグ サーバーを起動し、
  4. ブレンダーを起動
  5. スクリプトを実行すると、ブレークポイントにヒットします。

人々が遭遇する一般的な問題:

  • 間違った pydev デバッグ フォルダーへのパスを指している場合は、/pysrc フォルダーがあることを確認してください。
  • Pydev が更新されたら、debug_xxxxx が変更されるため、PYDEV_SOURCE_DIR を更新します。
  • Eclipseサーバーを実行していない、
  • Blenderアドオンディレクトリのバージョンではなく、ファイルのローカルコピーにブレークポイントを設定する
  • スクリプトを保存しても、blender がスクリプトをリロードしたり、imp を使用したり、アドオンを無効化/再有効化したり、Blender を再起動したりするわけではありません。

デバッグ用にブレンダーと Eclipse をセットアップするための適切な手順があります。 http://wiki.blender.org/index.php/User:Z0r/PyDevAndProfiling

これはブレンダー ゲーム エンジン用ですが、その多くは通常のブレンダーにも当てはまります。この助けを願っています!

編集:これはあなたの質問に答えていないと感じたので、削除しました。しかし、あなたが主張したので、ここにあります。

于 2014-07-25T16:46:27.527 に答える