Что означает это сообщение "примечание: см. Объявление ошибки _PyInitError" при попытке упаковать модуль C с помощью distutil? - PullRequest
0 голосов
/ 20 ноября 2018

Следуя моему предыдущему вопросу здесь , я хотел бы импортировать эту реализацию C / C ++ sha256 в мой скрипт Python (Python 3.7.0) и запустить некоторые тесты производительности.

Из официальной документации кажется, что одним из способов сделать это является использование distutil встроенного модуля python, чтобы упаковать его как новый модуль, а затем установить его, чтобы он стал импортируемым в любой скрипт.

Первым делом я скачал код sha256module.c и сохранил его в моем текущем каталоге.В этом же каталоге я создал setup.py со следующим содержимым, которое документация python рекомендует here .

setup.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» и, основываясь на ответе на этот вопрос, я установил версию сообщества Visual Studio 2017 на свою операционную систему Win10 x64.Ошибка ушла.Но я получил ошибки, указывающие на отсутствие некоторых других файлов, которые казались необходимыми для упаковки.Они перечислены как:

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

Я добавил их в текущий каталог, и когда я снова запускаю python setup.py build, я получаю еще одну ошибку с сообщением:нехватка __init__.py, поэтому я создал пустой, но он не сработал.

Я не уверен, правильно ли я все делаю.Что вы думаете об этой процедуре ?!Я в правильном направлении ?!Если да, скажите, пожалуйста, как устранить ошибку, а если нет, укажите, почему и где я делаю ошибку.

...