Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cx#U冷冻包装不';我不能在另一台机器上工作_Python_Paramiko_Cx Freeze_Pyside2 - Fatal编程技术网

Python cx#U冷冻包装不';我不能在另一台机器上工作

Python cx#U冷冻包装不';我不能在另一台机器上工作,python,paramiko,cx-freeze,pyside2,Python,Paramiko,Cx Freeze,Pyside2,好的,我开发了一个PySide桌面应用程序,我想使用cx\u Freeze共享它。我在打包paramiko库时遇到一些问题,但我解决了这个问题 我的机器上的一切都正常工作,这意味着双击cx\u Freeze生成的.exe应用程序可以正常启动和工作 当我在朋友的电脑上测试这个软件包时,我感到非常失望 应用程序未启动,并显示此错误: File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_

好的,我开发了一个PySide桌面应用程序,我想使用cx\u Freeze共享它。我在打包paramiko库时遇到一些问题,但我解决了这个问题

我的机器上的一切都正常工作,这意味着双击cx\u Freeze生成的.exe应用程序可以正常启动和工作

当我在朋友的电脑上测试这个软件包时,我感到非常失望

应用程序未启动,并显示此错误:

File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
  File "main_window.py", line 13, in <module>
  File "C:\Users\frpegora\Desktop\Projects\GUI\single_widget.py", line 13, in <module>
  File "C:\Users\frpegora\Desktop\Projects\GUI\importer_server.py", line 14, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\__init__.py", line 22, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\transport.py", line 90, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\ed25519key.py", line 20, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cryptography\hazmat\backends\openssl\__init__.py", line 7, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 71, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 195, in <module>
  File "C:\Users\frpegora\AppData\Local\Programs\Python\Python37\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 142, in init_static_locks
ImportError: DLL load failed: The specified module could not be found.
问题是,正如我在朋友的电脑上发布的错误所示,程序正在我的电脑路径上查找那些DLL

你能提出不同的解决方案吗?我尝试了一切,包括:

  • 手动传递DLL
  • 复制错误中显示的整个文件夹
这是我的setup.py:

from cx_Freeze import setup, Executable 
import os.path

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))

build_exe_options = {"packages": ['cffi', 'cryptography'], 'include_files': [ ('libssl-1_1-x64.dll', os.path.join('lib', 'libssl-1_1-x64.dll')),
 ('libcrypto-1_1-x64.dll', os.path.join('lib', 'libcrypto-1_1-x64.dll'))]}


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

setup(name = "AppGen" , 
    version = "0.1" , 
    description = "" ,
    options={'build_exe': build_exe_options},
    executables = [target])
从上看,导致错误的行似乎是:

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
因此,您朋友的电脑上可能缺少
\u ssl
。请尝试添加

import _ssl
到主脚本或修改安装脚本中的
build\u exe\u选项
,如下所示:

build_exe_options = {"packages": ['cffi', 'cryptography'],
                     '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")],
                     'includes': ['_ssl']}
关于你的声明:

问题是,正如我在朋友的电脑上发布的错误所示,程序正在我的电脑路径上查找那些DLL


回溯中显示的路径可能会误导您:这些是附加到代码对象的文件名,当冻结的应用程序被移动时,这些文件名可能无法实现。请参阅我的答案以获得更多的细节和允许冻结路径实现的CXY冻结选项。

请考虑使用<代码>代码格式化< /代码>用“回退”代替粗体来强调包名,例如CXY-FILL和PARAMIKO。不错的答案!我会在几天后试试,然后告诉你!好吧,那不是问题所在。我想可能是我在使用cx_Oracle,这是一种用于python的Oracle客户机连接器,它要求您的环境路径中有一个Oracle文件。因此,我知道如何将文件包含在cx_freeze中,但如何设置环境路径?请看cx_Oracle和cx_freeze的开发人员关于PyInstaller类似问题的提问。是的,我知道使用cx_Oracle必须做些什么,我想知道如何在cx_freeze setup.py中使用python来完成这项工作。如果我正确理解了您想要做的事情和链接的答案,那么您想要做的事情是不可能的。目标计算机上已经安装了Oracle客户端,您的冻结脚本也将在该计算机上正常工作,或者目标计算机上没有安装Oracle客户端,并且您的安装脚本无法(合法)在该计算机上自动安装许可的Oracle客户端。但可能我误解了什么,如果您想了解更多信息,请提出一个带有错误消息的新问题,并确保添加
cx oracle
标记。
build_exe_options = {"packages": ['cffi', 'cryptography'],
                     '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")],
                     'includes': ['_ssl']}