所以我有一個目錄樹如下:在Windows編程進口的作品,但不能在Linux上
pluginlist.py
plugins/
__init__.py
plugin1.py
plugin2.py
...
而且想連接一個類似命名的字典從每個plugin1的,plugin2等
我這樣做的方式是(從pluginlist.py)如下:
import os
pluginFolderName = "plugins"
pluginFlag = "##&plugin&##"
commands = {}
os.chdir(os.path.abspath(pluginFolderName))
for file in os.listdir(os.getcwd()):
if os.path.isfile(file) and os.path.splitext(file)[1] == ".py":
fileo = open(file, 'r')
firstline = fileo.readline()
if firstline == "##&plugin&##\n":
plugin_mod = __import__("plugins.%s" % os.path.splitext(file)[0])
import_command = "plugin_commands = plugin_mod.%s" % os.path.splitext(file)[0]
exec import_command
commands = dict(commands.items() + plugin_commands.commands.items())
print commands
(打印命令也用於測試目的)
在Windows上運行該命令會提供正確的命令字典,但在Linux(Ubuntu Server)上運行它會提供一個空字典。
你不能使用'plugin_commands = getattr(plugin_mod,os.path.splitext(file)[0])'而不是'exec'嗎? – Blender 2012-04-04 02:53:57