pyInstaller: Ошибка импорта

Я в Windows, используя pyInstaller для упаковки файла python. Но произошла ошибка:

Traceback (most recent call last): File "<string>", line 2, in <module> File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in i mportHook mod = _self_doimport(nm, ctx, fqname) File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in d oimport exec co in mod.__dict__ File "D:\Useful Apps\pyinstaller-2.0\server\build\pyi.win32\server\out00-PYZ.p yz\SocketServer", line 132, in <module> File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in i mportHook mod = _self_doimport(nm, ctx, fqname) File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in d oimport exec co in mod.__dict__ File "D:\Useful Apps\pyinstaller-2.0\server\build\pyi.win32\server\out00-PYZ.p yz\socket", line 47, in <module> File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in i mportHook raise ImportError("No module named %s" % fqname) ImportError: No module named _socket 

Я знаю, что _socket находится в пути C:\Python27\libs\_socket.lib , но как можно позволить EXE найти этот файл?

  • Python TCP Server принимает команды соединений и широковещания
  • python select.select () в Windows
  • Тайм-аут соединения сокетов Python
  • Python socket принимает блоки - запрещает приложение покидать
  • Тайм-аут чтения с использованием либо urllib2, либо любой другой http-библиотеки
  • Как вы запускаете приложение Twisted через Python (а не через Twisted)?
  • Python: SocketServer неожиданно закрывает TCP-соединение
  • Python Socket Flush
  • Создание многопоточного сервера с использованием инфраструктуры SocketServer в python
  • Сокет Python (дескриптор дескриптора Socket Error)
  • Преобразуйте шестнадцатеричную строку «little endian» в IP-адрес в Python
  • Как найти значение mtu сети через код (в python)?
  • 5 Solutions collect form web for “pyInstaller: Ошибка импорта”

    Это похоже на работу для скрытого импорта (доступно только в последних сборках).

    Из документов

     a = Analysis(['myscript.py'], hiddenimports = ['_socket'], <and everything else>) 

    Вы можете добавить путь к вашему spec-файлу приложения.

    В объекте Analysis вы можете указать pathex=['C:\Python27\libs\', 'C:\Python27\Lib\site-packages'] и любой другой путь …

    Обратите внимание, что если путь не найден, проблем нет … У меня также есть пути от linux.

    Если вы используете virtualenv, вы должны использовать опцию «-p» или «–path =« D: … »». Как это:

     pyinstaller.exe --onefile --paths=D:\env\Lib\site-packages .\foo.py 

    То, что это делает, генерирует файл foo.spec с помощью этого пути pathex

    Ни один из вышеперечисленных ответов не работал для меня, но я получил его на работу. Я использовал openpyxl, и мне нужен jdcal в модуле datetime.py. Ни один из скрытых импортов или какой-либо из этих методов не помог, запуск exe все равно скажет, что jdcal не найден. Обход, который я использовал, состоял в том, чтобы просто скопировать несколько функций из jdcal прямо в datetime.py в код openpyxl. Затем запустил pyinstaller -F program.py

    и это сработало!

    Имели подобные проблемы. Вот мое исправление для PyQt5, cffi, python 3.4.3:

    Это исправляет ошибку «sip» not found и «_cffi_backend», если это произойдет:

     # -*- mode: python -*- block_cipher = None a = Analysis(['LightShowApp.py'], pathex=['c:\\MyProjects\\light-show-editor-36', 'c:\\Python34\\libs\\', 'c:\\Python34\\Lib\\site-packages'], binaries=None, datas=None, hiddenimports=['sip', 'cffi'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, name='LightShowApp', debug=False, strip=False, upx=True, console=True ) 

    Посмотрите на «pathex» и «hiddenimports» выше. Это единственные изменения, сгенерированные по умолчанию. Создайте exe с помощью:

    pyinstaller LightShowApp.spec -F

    Я запустил это за пределами venv или pip-win – whatTF, в котором дерьмо!

    Python - лучший язык программирования в мире.