No module _cffi_ freezing with cx_Freeze

两盒软妹~` 提交于 2019-12-13 20:24:04

问题


I am developing a PySide application (Qt for Python) and I would like to freeze it using cx_Freeze.

When I run python setup.py build using my setup file below, it creates the build directory without errors, but then when I run the .exe file generated, I get the error message shown below:

from cx_Freeze import setup, Executable 

target = Executable(
    script="main_window.py",
    base = "Win32GUI",
    icon="images\\icon.ico"
    )

setup(name = "DemiurgoXMLgen" , 
    version = "0.1" , 
    description = "" ,
    options={'build_exe': {'include_files': ['images\\']}},
    executables = [target])

I think it has something to do with the Paramiko package I am using in my application. Has anyone encountered and solved this problem?


回答1:


I think I solved it by modifying setup.py as below:

import os.path

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
build_exe_options = {"include_files" : [
    os.path.join(PYTHON_INSTALL_DIR, "DLLs", "libcrypto-1_1-x64.dll"),
    os.path.join(PYTHON_INSTALL_DIR, "DLLs", "libssl-1_1-x64.dll")]}
build_exe_options = {"packages": ['cffi', 'cryptography'], 'include_files': ['images\\', os.path.join(PYTHON_INSTALL_DIR, "DLLs", "libcrypto-1_1-x64.dll"),
    os.path.join(PYTHON_INSTALL_DIR, "DLLs", "libssl-1_1-x64.dll")]}

target = Executable(
    script="main_window.py",
    base = "Win32GUI",
    icon="images\\icon.ico"
    )

setup(name = "DemiurgoXMLgen" , 
    version = "0.1" , 
    description = "" ,
    options={'build_exe': build_exe_options},
    executables = [target])

and modifying in paramiko->ed25519key.py the import:

from cryptography.hazmat.backends import default_backend

from cryptography.hazmat.backends import openssl as openssl_backend

Essentially:

  1. explicitly specify the import of cffi and cryptography in build_exe_options
  2. copy the dlls for libcrypto-1_1-x64.dll and libssl-1_1-x64.dll
  3. explicitly specify the backend as openssl_backend instead of default_backend


来源:https://stackoverflow.com/questions/56056191/no-module-cffi-freezing-with-cx-freeze

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!