2016-05-12 44 views
1

我使用Mac OS X與PyCharm和Python 3.5.1和Blender 2.77。Blender Python`bpy``__init __。py`,顯然是從一個不存在的模塊導入`_bpy`

我使用Blender和Python腳本。我知道,爲了運行使用Blender的Python腳本(即導入bpy),我需要使用blender -b -P /path/to/my_python_script.py從命令行運行它(儘管我不知道爲什麼)。這很好,它可以工作,但我希望我可以從Python內部運行它,因爲我將這些腳本與其他非Blender Python代碼一起使用,並且我喜歡使用PyCharm進行調試並執行幾乎所有的操作。我知道我不能只從PyCharm運行Blender Python腳本,但我想我會嘗試。我注意確保PyCharm可以通過編輯「首選項」中的「項目結構」設置來查看bpy模塊,以包含bpy模塊所在的父目錄,該目錄在我的機器上爲/Applications/blender.app/Contents/Resources/2.77/scripts/modules。但是,當我嘗試運行該腳本時,它會給出ImportError: No module named '_bpy'。我跟着錯誤的來源,並且罪魁禍首是bpy模塊(在我的機器上的位置是/Applications/blender.app/Contents/Resources/2.77/scripts/modules/bpy/__init__.py__init__.py文件中的一行;線路:

from _bpy import types, props, app, data, context 

於是,我就搜索模塊_bpy我的機器上,而且到處都找不到它。所以它似乎是從一個不存在的模塊導入東西。不過,我知道我的腳本是可行的,因爲我已經在Blender中成功運行了它。

所以我的問題是,什麼巫術正在與神祕的_bpy模塊進行,我和PyCharm都不能找到,但該Blender應用程序沒有問題?我希望能夠對這裏可能發生的事情有一個大致的瞭解,所以我們歡迎有教育意義的猜測(以及明確的答案)。

+0

當你輸入'import _bpy; _bpy .__ file__'時,輸出是什麼? – ppperry

+0

ImportError:沒有名爲'_bpy'的模塊 – Ray

+1

我假設'_bpy'模塊內置在blender中,並且沒有任何源文件。 – ppperry

回答

1

你有沒有注意到line beforefrom _bpy import...它說# internal blender C module這應該是贈品。

巫術,使這項工作是攪拌機二進制包括_bpy作爲二進制Python模塊,攪拌器,使該模塊訪問中包含攪拌器Python解釋器,它的Python解釋器的初始化過程中做到這一點。普通的攪拌機二進制文件不能被導入到攪拌機外的python解釋器。

要弄清楚如何做到這一點,您可以從python's c-api上的python文檔開始。您也可以通過source/blender/python查看攪拌機的源代碼,您可以在其中找到用於構建攪拌機主要基於c的模塊(如bpy,bgl,bmesh,mathutils)的c文件。

另請參閱this answer它有一個鏈接到建築攪拌機的信息作爲一個python模塊,因此它可以被導入(不包含gui)到外部python解釋器中。如果您在blender.stackexchange.com上搜索pycharm,可以在pycharm和eclipse中找到有關使用bpy的幾個答案,包括將攪拌器作爲外部解釋器運行以進行調試的方法。

+0

正是我在尋找的答案。進一步閱讀的建議是一個很大的優點。謝謝! – Ray

相關問題