python - 尝试使用 'distutil' 打包 C 模块时,此“注意:请参阅 '_PyInitError' 的声明”错误是什么意思?
问题描述
在我之前的问题之后,我想将此C/C++ 实现sha256
导入我的 python 脚本(Python 3.7.0)
并运行一些性能测试。
从官方文档看来,这样做的一种方法是使用distutil
python 的内置模块将其打包为新模块,然后安装它,以便它可以导入任何脚本。
我采取的第一步是下载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
所以我创建了一个空的但它不起作用。
我不确定我这样做是否正确。你觉得这个过程怎么样?!我的方向正确吗?!如果是,请告诉我如何解决该错误,如果不是,请说明我做错的原因和位置。
解决方案
推荐阅读
- apache-kafka - 如何将完整的 ksqldb 客户端 API 与 gradle 一起使用?
- asp.net-mvc - MVC 表单 DropDownListFor
- python - 使用 Python 以编程方式编辑 Terraform 配置文件
- c# - 在 C# ASP .Net Core MVC 中更改日期格式
- python - 为什么即使它应该基于输出,这个简单的代码行也不起作用?
- javascript - Chrome 阻止重定向到本地文件 url
- c# - 如何写“有多少数据?” 从我的数据库到 label2.text?
- beautifulsoup - Beautifulsoup 抓取对象选择
- ubuntu - 通过 VPS 中的端口使用 OpenVPN Server
- reactjs - 如何使用 Rest Framework 从前端(React)向 Django 发送查询