it-roy-ru.com

Pyinstaller - ImportError: нет системного модуля 'pywintypes' (pywintypes27.dll)

Я пытаюсь упаковать мой скрипт на Python в исполняемый файл. Я думал, что буду довольно прямолинейным, поскольку у меня не так много импорта. Прежде всего, вот мой импорт:

from __future__ import print_function 
from netCDF4 import Dataset
import numpy as np
import os
from progressbar import Percentage,Bar,ETA,ProgressBar,RotatingMarker  

Я точно знаю, что numpy поддерживается, я не уверен насчет __future__ или os, и я точно знаю, что netCDF4 и progressbar не поддерживаются. Я использую pyinstaller версии 2.1 на Python 2.7.7 для Windows 7, и вот команда, которую я использую, чтобы начать создавать .exe:

C:\Users\Patrick\Desktop\netcdf_grid_extraction>pyinstaller --onefile --hidden-i
mport=netCDF4 --hidden-import=progressbar netcdf_grid_extraction.py

Вот список ошибок. Кажется, есть одна большая проблема с невозможностью найти модуль pywintypes.dll, а также две сборки, связанные с AMD64_Microsoft. Вот список из 4 ошибок, которые я получаю. Как я могу решить эти проблемы?

1

1130 INFO: Searching for Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
1134 WARNING: Assembly not found
1134 ERROR: Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found
1210 INFO: Searching for Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
1210 WARNING: Assembly not found
1210 ERROR: Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found

2

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pythoncom.py", line 2, in <m
odule>
    import pywintypes
  File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 124, in <module>
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 98, in __import_pywin32_system_module__
    raise ImportError("No system module '%s' (%s)" % (modname, filename))
ImportError: No system module 'pywintypes' (pywintypes27.dll)
4155 INFO: Processing hook hook-pywintypes
Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pythoncom.py", line 2, in <m
odule>
    import pywintypes
  File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 124, in <module>
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:\Users\Patrick\Anaconda\lib\site-packages\win32\lib\pywintypes.py", li
ne 98, in __import_pywin32_system_module__
    raise ImportError("No system module '%s' (%s)" % (modname, filename))
ImportError: No system module 'pywintypes' (pywintypes27.dll)

3

5840 INFO: Searching for Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.
21022.8_none ...
5840 WARNING: Assembly not found
5840 ERROR: Assembly AMD64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
not found

4

Traceback (most recent call last):
  File "C:\Users\Patrick\Anaconda\Scripts\pyinstaller-script.py", line 9, in <mo
dule>
    load_entry_point('PyInstaller==2.1', 'console_scripts', 'pyinstaller')()
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\main.py", line 88, in run
    run_build(opts, spec_file, pyi_config)
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\main.py", line 46, in run_build
    PyInstaller.build.main(pyi_config, spec_file, **opts.__dict__)
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 1924, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'
))
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 1873, in build
    execfile(spec)
  File "C:\Users\Patrick\Desktop\netcdf_grid_extraction\netcdf_grid_extraction.s
pec", line 17, in <module>
    console=True )
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 1170, in __init__
    strip_binaries=self.strip, upx_binaries=self.upx,
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 1008, in __init__
    self.__postinit__()
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 309, in __postinit__
    self.assemble()
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 1050, in assemble
    dist_nm=inm)
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 842, in checkCache
    digest = cacheDigest(fnm)
  File "C:\Users\Patrick\Anaconda\lib\site-packages\pyinstaller-2.1-py2.7.Egg\Py
Installer\build.py", line 796, in cacheDigest
    data = open(fnm, "rb").read()
IOError: [Errno 22] invalid mode ('rb') or filename: ''

И вот предупреждения, которые я получаю, которые могут или не могут быть подходящими, и оба связаны с неспособностью найти ctypes

890 WARNING: library python%s%s required via ctypes not found
2175 WARNING: library python%s%s required via ctypes not found

Хорошей новостью является то, что кажется, что сторонние модули учитываются, однако я не уверен, связаны ли они с ошибками, которые я получаю:

4540 INFO: Hidden import 'netCDF4' has been found otherwise
4540 INFO: Hidden import 'progressbar' has been found otherwise
4540 INFO: Hidden import 'codecs' has been found otherwise
4545 INFO: Hidden import 'encodings' has been found otherwise
9
pbreach

Я только что скопировал DLL pywintypes27.dll в C:\Python27\Lib\site-packages\pywin32_system32.
Я добавил его в win32/lib

Все нормально!

9
Lemayzeur

У меня такая же проблема. DLL, pywintypes27.dll был в C:\Python27\Lib\site-packages\pywin32_system32. Я добавил этот каталог в переменную окружения PATH, и py2exe смог найти DLL. Очевидно, что установка пути не является правильным решением (и вы могли бы сделать это программно через os.environ), но это работает для меня.

7
Lee Kamentsky

Решение проблемы 2. Решение по ссылке ниже решило проблему для меня :) 

С pywin32 build 219, установленной через conda на python 2.7, импорт pythoncom завершается неудачно с

ImportError: No system module 'pywintypes' (pywintypes27.dll)

Проблема в том, что библиотека pywintypes27.dll хранится не в 

pathtovenv\Lib\сайт-пакеты\win32\Lib\pywintypes27.dll 

но в 

pathtovenv\Lib\сайт-пакеты\win32\pywintypes27.dll

Добавление в файл win32\lib\pywintypes.py части Elif ниже решает проблему

::: питон

if found is None:
    # Not in the Python directory?  Maybe we were installed via
    # easy_install...
    if os.path.isfile(os.path.join(os.path.dirname(__file__), filename)):
        found = os.path.join(os.path.dirname(__file__), filename)
    Elif os.path.isfile(os.path.join(os.path.dirname(__file__), "..", filename)):
        found = os.path.join(os.path.dirname(__file__), "..", filename)

В короткие сроки похоже, что pywintypes27.dll находится не в той папке 

http://sourceforge.net/p/pywin32/bugs/685/

4
Nautilius

Я использовал виртуальную среду и у меня была такая же проблема. Pywintypes35.dll отсутствует. Это было мое решение:

pip install pypiwin32
4
karlJ

У меня была похожая проблема:

Traceback (most recent call last):
  File ".\install\pywin32_postinstall.py", line 605, in <module>
    install()
  File ".\install\pywin32_postinstall.py", line 328, in install
    LoadSystemModule(lib_dir, "pywintypes")
  File ".\install\pywin32_postinstall.py", line 166, in LoadSystemModule
    mod = imp.load_dynamic(modname, filename)
ImportError: DLL load failed: The specified module could not be found.

Моя ошибка была в том, что я установил pywin32 через pip для пользователя

pip install pywin32 --user

Таким образом, необходимые DLL-файлы были в пользовательских данных AppData:% appdata%\Python\Python27\site-packages Именно поэтому pywin32_postinstall.py не смог их найти.

Помогла переустановка без опции --user.

0
flam3

Вам следует запустить сценарий после установки расширений pywin32 с параметром -install, чтобы убедиться, что среда настроена правильно. 

pywin32_postinstall.py -install

0
Niyaz

Не уверен, если вы все еще ищете помощь по этому вопросу.

Ошибки 1 и 3 выглядят одинаково. Этот SO вопрос указал мне правильное направление. По сути, установите MS VC++ 9.0 x64 пакет распространения , и это должно позаботиться об этих ошибках.

Ошибка 2, по-видимому, была устранена благодаря предложению Ли.

Ошибка 4 вызвана тем, что по какой-то причине PyInstaller вставил несколько пустых имен файлов в ваш двоичный список. Я не уверен, есть ли менее хакерский способ исправить ошибку, но я смог обойти это, поставив

for b in a.binaries:
    if b[0] == '':
        a.binaries.remove(b)

после блока Analysis( ... ) в моем файле спецификации.

Я не уверен, что предупреждения library python%s%s required via ctypes not found актуальны. Они ужасно подозрительны, но я спустился в кроличью нору, пытаясь выяснить, где были созданы эти предупреждения, и мне удалось потратить около двух часов моего вечера.

0
Tim Supinie