标签: py2exe

pymssql 抛出 ImportError: 使用 py2exe 构建应用程序时没有名为 _mssql 的模块

我有 python 应用程序应该作为 Windows 可执行文件启动。我正在使用 py2exe 和 pymssql 1.9.908。

我使用下一个构建脚本来生成应用程序:

from distutils.core import setup
import MySQLdb
import fnmatch
import os
import pymssql
import shutil
import py2exe
import glob

##############

name = 'BGAgent'
old_version = '0.1'
ver = '0.1'

distDir = 'Dist' + name + ver
shutil.rmtree(distDir, True)
shutil.rmtree('Dist' + name + old_version, True)

os.mkdir(distDir)

##############

class Target(object):
    """ A simple class that holds information on our executable file. """
    def __init__(self, **kw):
        """ Default class constructor. Update as you need. …
Run Code Online (Sandbox Code Playgroud)

python py2exe pymssql

5
推荐指数
1
解决办法
2万
查看次数

使用 tkinter 的 iconbitmap 读取 .exe 中的图标

我的应用程序内置于单个 .exe 文件中,扩展名为py2exe. 而不是此代码(当我有 .ico 文件时有效):

root.iconbitmap(default='test.ico')
Run Code Online (Sandbox Code Playgroud)

我想用

root.iconbitmap(default='test.exe')
Run Code Online (Sandbox Code Playgroud)

因为既然我只有一个.exe文件,我就不再有.ico文件了......

它不起作用:

_tkinter.TclError: bitmap "D:\temp\test.exe" not defined
Run Code Online (Sandbox Code Playgroud)

该文件存在,但似乎iconbitmap无法从嵌入图标的 .exe 中读取图标...

如何使用 tkinter 读取 .exe 文件中嵌入的图标iconbitmap

python user-interface tkinter py2exe pyinstaller

5
推荐指数
1
解决办法
2074
查看次数

无法从 py2exe 编译的脚本中导入 distutils

我在 Windows Server 2012R2 上,尝试在 virtualenv 中使用 py2exe 编译脚本,每当应用程序脚本之一尝试“导入 distutils”(在我的情况下,它位于第 3 方库中的某个位置)时,我就会遇到问题,但我在这里减少了问题)。

重现步骤:

它返回:

    C:\Users\root\p\dist\library.zip\distutils\__init__.py:14: UserWarning: The virtualenv distutils package at %s appears to be in the same location as the system distutils?
    Traceback (most recent call last):
      File "py2exe_distutils.py", line 6, …
Run Code Online (Sandbox Code Playgroud)

python distutils py2exe virtualenv

5
推荐指数
1
解决办法
1676
查看次数

哪里可以找到丢失的 DLL

一个基本的缺少 DLL 的问题...

我正在尝试使用 Py2Exe 来打包我的使用 wxPython 的 Python 程序。Py2Exe 由于缺少 DLL 而不断失败,但我不知道在哪里可以找到它们。我尝试搜索整个 C: 驱动器,但在任何地方都找不到它们,这告诉我它们丢失了,而不仅仅是未注册。谷歌搜索也没有帮助我找到它们,除非通过狡猾的“安装神奇的缺失DLL(我们保证没有垃圾软件;)”网站。

我希望有人能够发现这些 DLL 之间的联系并告诉我它们来自哪里。这里有一些 - 每次我告诉 Py2Exe 排除一个 DLL 时,它都会说我缺少一个不同的 DLL,而且这个列表似乎永无止境:

  • api-ms-win-core-libraryloader-l1-2-1.dll
  • api-ms-win-core-atoms-l1-1-0.dll
  • api-ms-win-core-winrt-error-l1-1-1.dll
  • api-ms-win-core-sidebyside-l1-1-0.dll
  • api-ms-win-core-localization-obsolete-l1-3-0.dll
  • api-ms-win-core-heap-l1-2-0.dll
  • api-ms-win-core-heap-l2-1-0.dll
  • api-ms-win-core-delayload-l1-1-1.dll
  • api-ms-win-core-libraryloader-l1-2-0.dll
  • api-ms-win-core-rtlsupport-l1-2-0.dll
  • api-ms-win-core-shlwapi-obsolete-l1-2-0.dll
  • api-ms-win-security-base-l1-2-0.dll

我运行的是 Win 10(从 Win 8.1 升级),并且安装了 x86 和 x64 版本的 Microsoft Visual C++ Redistributables 2008、2010 和 2012。

我确实在论坛上听说过 Direct X 问题 - Direct X 应该安装其中一些,但那与游戏有关,我不明白为什么我需要 Direct X 来实现我的目的。我的 wxPython GUI 非常基础。

更新:运行“sfc /scannow”没有发现任何问题。

更新:我还安装了 Microsoft Visual C++ Redistributables 2015 和 Visual Studio 10 …

windows dll py2exe

5
推荐指数
1
解决办法
2783
查看次数

Python 3.x + PyQt5 + py2exe/pyinstaller/cx-Freeze

我一直在探索如何冻结使用Flask-desktop 的包的选项。Qt 完成了很多繁重的工作,因此它是一个相当大的库。

我尝试了几种选择,看看我能做什么。此处的 Python 版本表明对每个包的明确支持。

|                 |Python 3.4|Python 3.5|Python 3.6|Runs*  |Works**|
|-----------------|----------|----------|----------|-------|-------|
|PyQt4            |Yes       |Yes       |Yes       |?      |?      |
|PyQt5 (5.8.2)    |No        |Yes       |Yes       |Yes    |Yes    |
|cx-Freeze (5.0.1)|Yes       |Yes       |Yes       |Yes    |Yes    |
|py2exe (0.9.2.2) |Yes       |No        |No        |Yes    |No     |
|pyinstaller***   |Yes       |Yes***    |No        |Yes    |No     |
Run Code Online (Sandbox Code Playgroud)

*命令执行或包导入没有错误

**命令结果有效(即产生工作冻结)

*** 开发分支支持

我尝试分别使用最新版本的 py2exe 和 pyinstaller 与 Python 3.4/3.5/3.6,但没有成功。我每次收到的错误都是不同且复杂的,并且对于每个 Python 版本和任一冷冻机包的配对,我对其进行的调试和研究都是不成功的。我很快就没有足够的时间来深入研究这个问题。

PyQt4 不是一个实用的选择,因为它缺乏一些非常重要的功能,例如 HiDPI 支持,并且它使用已弃用的 QtWebKit。

PyQt5 仅与 Python 3.5 及更高版本兼容,因为它的sip包需要它。

py2exe 支持 UPX 和单文件 …

py2exe pyinstaller cx-freeze python-3.x pyqt5

5
推荐指数
0
解决办法
1239
查看次数

来自 cython 的完全独立的 exe

我有一个 python 脚本,旨在成为一个完全独立的 exe,据我所知,可以通过以下方法来完成:

1-使用 py2exe 或 pyinstaller 之类的东西。他们的问题是众所周知的,与其他任何东西相比,输出非常大,只有数十 MB 来打印 hello world 并不好。所以,我希望没有人推荐使用它们。

2-另一种方法是将其编译为 C,然后将此 C 编译为 exe 我已经尝试了第二个解决方案,并使用 Cython 达到了良好的 exe 大小

cython --embed my_code.py
Run Code Online (Sandbox Code Playgroud)

这给出了 my_code.c 。我把它带到 Visual Studio 编译器来编译它:

cl my_code.c /I C:\python3\include /link /LIBPATH:C:\python3\libs 
Run Code Online (Sandbox Code Playgroud)

现在我有了exe,但不幸的是,它根本不是独立的!

1-我的用户定义的导入应该在它旁边才能工作。(我以为它们会合并,但这显然没有发生)

2-最大的问题是它仍然依赖于我的计算机上的python路径-Lib文件夹

当在另一台电脑(没有Python)上尝试时,出现以下错误:

Py_Initialize fails - unable to load the file system codec
No module named encodings
Run Code Online (Sandbox Code Playgroud)

就我的搜索而言,这是由于他找不到库编码,它仍然会查找 C:\python3\Libs (不是独立的,仍然希望在客户电脑上安装 python)

我希望找到上述两个问题的解决方案,并提前致谢。

python exe py2exe pyinstaller cython

5
推荐指数
0
解决办法
3420
查看次数

如何将pyw文件转换为exe?

如何使用 pyinstaller将pyw文件转换为exe,如果不可能,我该如何使用 py2exe 执行此操作?

我正在使用python 3

python py2exe pyinstaller python-3.x

5
推荐指数
1
解决办法
4742
查看次数

python 3:py2app“未找到模块(无条件导入)”

我正在为一个对代码一无所知的朋友构建一个独立的 python3 应用程序。对于这个应用程序,我使用了多个模块,包括tkinteropenpyxl。我py2app用来制作我的应用程序。

即使程序的 GUI 部分有效,使用该openpyxl模块的方法也无效。正如我的终端所示:

Modules not found (unconditional imports):
 * StringIO.StringIO (pkg_resources._vendor.six)
 * _gdbm (dbm.gnu)
 * cjkwrap (texttable)
 * com (com.sun.jna)
 * com.jna (com.sun)
 * com.sun (com.sun.jna.platform)
 * copy_reg (pyexcel_io._compact)
 * defusedxml (openpyxl.xml.functions)
 * itertools.izip (ctypes.macholib.dyld)
 * itertools.izip_longest (ctypes.macholib.dyld)
 * lxml (openpyxl.conftest, openpyxl.xml.functions)
 * lxml.LXML_VERSION (lxml.etree)
 * lxml.etree.Element (openpyxl.conftest, openpyxl.xml)
 * lxml.etree.ElementTree (openpyxl.conftest, openpyxl.xml)
 * lxml.etree.LIBXML_VERSION (openpyxl.xml, openpyxl.xml.functions)
Run Code Online (Sandbox Code Playgroud)

等等 ...

现在我首先认为我的setup.py文件是错误的,所以我进行了调查。尽管我仍然对这个选项感到困惑,但argv_emulation我认为它是正确的。

from setuptools import setup

APP …
Run Code Online (Sandbox Code Playgroud)

python py2exe py2app python-3.x openpyxl

5
推荐指数
0
解决办法
888
查看次数

为什么从 python 脚本创建的可执行文件被检测为病毒?

我尝试过 PyInstaller、py2exe 和 cx_Freeze 从 Python 脚本创建 Windows 可执行文件。然后我尝试使用 VirusTotal 检查生成的可执行文件是否有病毒。它给出了以下结果:

PyInstaller:18 / 69 检测到病毒

py2exe: 4 / 68 检测到病毒

cx_Freeze: 1 / 68 检测到的病毒

看起来cx_Freeze是最安全的,但是PyInstaller就灾难性的了。

我在网上查了一下,他们说都是误报,但是要让客户相信18种防病毒软件都误报并不容易。

我的问题是:为什么从 python 脚本创建的可执行文件被检测为病毒?这背后的技术问题是什么?

谢谢。

python virus py2exe pyinstaller cx-freeze

5
推荐指数
0
解决办法
329
查看次数

py2exe包括.exe中的MSVC DLL

当使用py2exe通过wxPython分发Python应用程序时,通常需要一些MSVC DLL来使.exe在新安装的机器上运行.特别是,两个最常见的DLL是msvcp71.dll和msvcr71.dll

前者可以使用此提示包含在.exe中.但是,后者只是dist通过py2exe 放在目录中,而不是放在可执行文件中,即使我特别要求包含它.

知道如何让py2exe包含在.exe中吗?

python dll py2exe

4
推荐指数
1
解决办法
5101
查看次数