【发布时间】:2025-12-19 05:00:12
【问题描述】:
我创建了一个测试 c dll,它导出一个我想公开给 python 绑定的函数。为此,我使用了 SWIG 的最新版本。编译成功后,SWIG 给我留下了一个 x.py 和一个 x.dll 文件。
现在我应该“导入”“包”。但是,无论我将这些文件复制到哪里,当我在 python 中键入“import x”时,我都会得到“ImportError: No module named 'x'”。
那么我如何在 python 中加载这样一个自定义创建的包?
我正在运行 windows 7 x64,带有 python 3.3 和最新的 SWIG。
谢谢
编辑:我们正在取得进展!我做了一些路径技巧,现在找到了模块,但是:
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File ".\_pt1.py", line 28, in <module>
_pt1 = swig_import_helper()
File ".\_pt1.py", line 24, in swig_import_helper
_mod = imp.load_module('_pt1', fp, pathname, description)
File "C:\Python33\lib\imp.py", line 180, in load_module
return load_source(name, filename, file)
File "C:\Python33\lib\imp.py", line 119, in load_source
_LoadSourceCompatibility(name, pathname, file).load_module(name)
File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1022, in load_module
File "<frozen importlib._bootstrap>", line 1003, in load_module
File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
File "<frozen importlib._bootstrap>", line 853, in _load_module
File "<frozen importlib._bootstrap>", line 954, in get_code
File "C:\Python33\lib\imp.py", line 106, in get_data
return super().get_data(path)
File "<frozen importlib._bootstrap>", line 1032, in get_data
RuntimeError: maximum recursion depth exceeded while calling a Python object
pt1 是我的测试模块。
编辑2:
我已将所有文件上传到这里:(40kb) rghost.net/53170317
【问题讨论】:
-
参见using distutils(SWIG 3.0 文档)。另请阅读Distributing Python Modules 和Python Packaging User Gudie。
-
请说明您将文件放在哪里并尝试过,以及您是如何运行python的
-
谢谢,这有帮助。我在文件中添加了前导下划线“_”。现在它们被找到了,但是由于递归错误而失败。我将日志粘贴到第一篇文章中。
标签: python python-3.x binding swig