首页 > 解决方案 > 尝试使用 'distutil' 打包 C 模块时,此“注意:请参阅 '_PyInitError' 的声明”错误是什么意思?

问题描述

在我之前的问题之后我想将此C/C++ 实现sha256导入我的 python 脚本(Python 3.7.0)并运行一些性能测试。

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

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

设置.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”错误,根据这个问题的答案,我在我的 Win10 x64 操作系统上安装了 Visual Studio 2017 社区版。错误消失了。但是我收到错误,表明缺少一些其他似乎需要打包的文件。它们被列为:

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

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

我不确定我这样做是否正确。你觉得这个过程怎么样?!我的方向正确吗?!如果是,请告诉我如何解决该错误,如果不是,请说明我做错的原因和位置。

标签: pythonsha256distutils

解决方案


推荐阅读