python编写com组件问题 20C

背景: 我想用python编写一个com组件,然后在vbs中调用.

文件: PyHello.py文件

class PyHello(object):
    def __init__(self):
        pass

    def SayHello(self):
        return 'Hello Python!'

    def DoAdd(self, a, b):
        return a + b
class _WrapPyHello(PyHello):
    import pythoncom
    # _reg_clsid_ = '{4ae5ed1d-c378-4da1-9816-5a038112dlksdjfasio}'
    _reg_clsid_ = pythoncom.CreateGuid()
    _reg_progid_ = "Python.PyHello"
    _public_methods_ = ['SayHello','DoAdd']


if __name__=='__main__':
    import win32com.server.register
    win32com.server.register.UseCommandLine(_WrapPyHello)

setup.py文件

 from distutils.core import setup
import py2exe


setup(com_server=["PyHello"],
      zipfile = None,
      options = {
                    'py2exe' : {
                        "bundle_files": 1,
                       "dll_excludes": ["MSVCP90.dll","w9xpopen.exe"]
                    }
                }
)

如果直接运行 PyHello.py 之后,其实已经注册好了,已经可以用VBS调用了

VBS 代码:

 Set inst = CreateObject("Python.PyHello")
MsgBox "1111"
MsgBox inst.SayHello()
MsgBox inst.DoAdd(1,3)

现在的问题是,怎么把PyHello.py这个文件编译成dll, 然后在VBS中不依赖python的环境使用.

参考资料:
https://zhuanlan.zhihu.com/p/22023698?refer=python-dev
用这个帖子中的方法,我没有成功

其它资料:
https://www.oschina.net/code/snippet_91334_19994
https://blog.csdn.net/qiaokelinaicha/article/details/68921470
https://blog.csdn.net/DarkChampion/article/details/4420139

困扰好久了, 哪位大神熟悉python,请帮帮忙.

3个回答

python搞exe dll这种小众的方案基本不会出现在商业软件中,可靠性,适用性根本没有保障。为什么非要用python编写dll呢,你有独自一人研究这个的精力不如使用别的语言了。

u011513939
郭振澳 python的第三方库比较丰富, 我想封装一些东西,给其它语言调用
大约 2 年之前 回复

python的第三方库比较丰富, 我想封装一些东西,给其它语言调用

py2exe 2.7版本的可以

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问