当试图使用'distutil'打包C模块时,这个“note:see declaration of''PyInitError'”错误意味着什么?

2024-05-15 10:48:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我前面的问题here,我想将thisC/C++实现导入到我的python脚本^ {< CD2>}中,并运行一些性能测试。

从官方文档来看,这样做的一种方法是使用python的distutil内置模块将其打包为一个新模块,然后安装它,这样它就可以导入任何脚本

我采取的第一步是下载sha256module.c代码并将其保存到当前目录中。在同一个目录中,我创建了一个setup.py,其中包含python文档推荐的here内容

设置.py:

from distutils.core import setup
from distutils.extension import Extension
setup(name='sha256_test1',
      version='1.0',
      description = 'This is a test sha256 function',
      ext_modules=[Extension('sha256', sources = ['sha256module.c'])],
      )

创建安装文件后,在命令提示符下,在与我运行的安装程序相同的目录下python setup.py build。首先,我收到“找不到vcvarsall.bat”错误,根据对this问题的回答,我在Win10 x64操作系统上安装了visualstudio2017社区版。错误消失了。但我收到的错误表明缺少一些其他文件,似乎需要打包。它们被列为:

hashlib.h
coreconfig.h
pystrhex.h
python.h
structmember.h
tracemalloc.h
clinic/sha256module.c.h

我将它们添加到当前目录中,当我再次运行python setup.py build时,我得到另一个错误,即“注意:请参阅'\u PyInitError'的声明”,我认为这可能是由于缺少__init__.py,所以我创建了一个空的,但它不起作用

我不确定我是否做得很好。你觉得这个程序怎么样?!我的方向对吗?!如果是,请告诉我如何处理错误,如果不是,请说明我做错的原因和地方


Tags: 模块from文档pyimportbuild目录脚本