我完全按照这里最好的答案的示例操作,使用Pyc.py进行编译。
在pyScope = pyEngine.ImportModule("MyClass");
处出现异常。
no module named MyClass
我认为这是一个bug,因为有时使用Pyc.py重新编译会生成一个被ImportModule识别的dll,但有时则不行。
结论:如digEmAll所述,在此方式下使用Pyc.py编译模块会产生随机结果。应手动调用clr.CompileModules。
我完全按照这里最好的答案的示例操作,使用Pyc.py进行编译。
在pyScope = pyEngine.ImportModule("MyClass");
处出现异常。
no module named MyClass
好的,我明白了。
模块名称是原始.py模块的名称(区分大小写),而不是编译后的dll名称。
我的意思是,如果您的原始模块名称为myClass.py
,然后您将其编译为MyClass.dll
,您必须使用ImportModule("myClass")
而不是ImportModule("MyClass")
编辑:
前面的代码是指以下编译方法:
import clr
clr.CompileModules("CompiledScript.dll", "script.py")
pyc.py
,生成的dll包含一个名为 __main__
的模块,而不是 .py
文件名。__main__
,但我仍然不理解其中的联系...
Program.py
的脚本,并创建了一个名为CompiledTest.dll
的程序集。使用给定的代码和适当的程序集名称更改,我遇到了你(@cory)遇到的问题。将模块导入的名称更改为Program
可以解决这个问题。希望这回答了你的问题。 - Jeff Mercado