标签: py2exe

Python - Py2exe无法使用'email'模块构建.exe

py2exe不适用于标准电子邮件模块

你好.我试图使用py2exe将脚本转换为exe.构建过程显示:


似乎缺少以下模块

['email.Encoders','email.Generator','email.Iterators','email.MIMEBase','email.MIMEMultipart','email.MIMEText','email.Utils','email.base64MIME']

可执行文件不起作用.引用的模块不包括在内.我在互联网上研究了这个,我发现py2exe在标准的lib电子邮件模块中使用的Lazy导入有问题.不幸的是,我没有成功找到解决此问题的方法.有人可以帮忙吗?

谢谢,

脚本中的PS Imports如下所示:

代码:从电子邮件中选择所有导入字符串,时间,sys,os,smtplib.MIMEMultipart从email.MIMEBase导入MIMBultipart从email.MIMEText导入MIMEBase从电子邮件导入编码器导入MIMEText

python winapi py2exe

7
推荐指数
1
解决办法
7400
查看次数

将Python应用程序捆绑为单个文件以支持加载项或扩展?

有几个实用程序 - 都具有不同的过程,限制和目标操作系统 - 用于获取Python包及其所有依赖项,并将它们转换为易于发送给客户的单个二进制程序:

我的情况更进一步:第三方开发人员希望为我的应用程序编写插件,扩展或附加组件.当然,一个令人生畏的问题是,像Windows这样的平台上的用户最容易安装插件或插件,以便我的应用程序可以轻松发现它们已经安装.但除此基本问题之外还有另外一个问题:第三方开发人员如何将扩展与扩展本身需要的任何库(可能是二进制模块,如lxml)捆绑在一起,以便插件的依赖关系可以在同一时间导入插件可用的时间.

怎么能接近这个?我的应用程序是否需要在磁盘上使用自己的插件区域以及自己的插件注册表来使其易于处理?或者是否有一些通用机制,我可以避免自己编写,这将允许作为单个可执行文件分发的应用程序环顾四周并找到也作为单个文件安装的插件?

python software-distribution py2exe pyinstaller py2app

7
推荐指数
1
解决办法
1093
查看次数

从py2exe'd程序连接到Oracle时出错:无法获取Oracle环境句柄

当我使用Python解释器运行它时,我的python程序(Python 2.6)工作正常,它连接到Oracle数据库(10g XE)而没有错误.但是,当我使用py2exe编译它时,可执行版本在调用cx_Oracle.connect()时失败并显示"无法获取Oracle环境句柄".

我没有高兴地试过以下事情:

  • Oracle即时客户端10g和11g
  • Oracle XE客户端
  • 重新安装cx_Oracle-5.0.2-10g.win32-py2.6.msi
  • 设置ORACLE_HOME以及PATH
  • 另一台只有Oracle客户端和exe的计算机
  • 构建exe的各种选项(无压缩和/或使用zip文件)

我的测试用例:

testora.py:

import cx_Oracle
import decimal # needed for py2exe to compile this correctly

def testora():
    """testora

    >>> testora.testora()
    <cx_Oracle.Connection to scott@localhost:1521/orcl>
    X
    """
    orcl = cx_Oracle.connect('scott/tiger@localhost:1521/orcl')
    print orcl
    curs = orcl.cursor()
    result = curs.execute('SELECT * FROM DUAL')
    for (dummy,) in result:
        print dummy

if __name__ == '__main__':
    testora()
Run Code Online (Sandbox Code Playgroud)

build_testora.py:

from distutils.core import setup
import py2exe, sys

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {
        'bundle_files': 2,
        'compressed': True …
Run Code Online (Sandbox Code Playgroud)

python oracle cx-oracle py2exe

6
推荐指数
1
解决办法
4273
查看次数

如何使用py2exe减小exe的大小

我使用python和wxwidgets开发了一个小程序.这是一个非常简单的程序,它只使用一个迷你框架在需要时显示一些信息,其余时间它什么也没显示,只在任务栏中显示一个图标.

当我使用py2exe(单文件exe模式,优化)构建exe时,我得到一个6MB大小的文件!

我尝试不包括一些不需要的库或dll,但我仍然无法理解为什么我会在任务栏中只获得一个迷你框架和图标这么大的文件.

有没有办法减少py2exe生成的exe的大小?

这是我自己减少一点的方法:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
                                'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
                                'Tkconstants', 'Tkinter'],
                    "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                                'tk84.dll'],
Run Code Online (Sandbox Code Playgroud)

谢谢.

python executable py2exe filesize

6
推荐指数
2
解决办法
5069
查看次数

py2exe:减小库归档的大小

我刚刚创建了我的第一个py2exe可执行文件,并注意到使用EXE,创建了一个大小约为1.4 MB的ZIP文件.

我的问题是,我可以减小它的大小,或者预计使用py2exe生成的EXE的典型大小将是~4 MB(这意味着所有文件:python2.6dll,library.zip)

python py2exe

6
推荐指数
1
解决办法
2359
查看次数

py2exe"包含"模块:何时应手动管理?

什么时候需要指定要包含的模块?是不是py2exe搜索并包含所需的任何内容:http://www.py2exe.org/index.cgi/FAQ

为什么它包含未使用的模块,例如["Tkconstants","Tkinter","tcl","wx"](我使用Qt,但在我的电脑上安装了wx),然后需要被排除在外?

python py2exe

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

py2exe错误处理重定向和弹出窗口

一直试图弄清楚如何让py2exe更优雅地处理错误.基本上发生了两件奇怪的事情:

1)关闭程序后弹出消息=>想要抑制(不显示)此弹出窗口

2)在c:\ Program Files\AppName\AppName.exe.log中创建日志文件(有时写入此文件夹有权限错误)=>将日志重定向到c:\ ProgramData

我想我可能只是将代码放在错误的位置并且py2exe引导程序代码在我设置它们之后触发但我不确定.我已经尝试在生成错误日志之前放置此代码,但它仍然会进入py2exe引导它们到的地方(StdErr对象)


我的程序结构如下

src/
  python/
    gui/
      __main__.py
Run Code Online (Sandbox Code Playgroud)

.py

if __name__ == "__main__":
    # Redirect py2exe log to somewhere else if windows
    if hasattr(sys,"frozen") and sys.frozen in ("windows_exe", "console_exe"):
        stdout_file = "c:\ProgramData\AppName\out.log"
        stderr_file = "c:\ProgramData\AppName\err.log"
        sys.stdout = open(stdout_file, "w")
        sys.stderr = open(stderr_file, "w")
    try:
        gui = AppNameGui()
        gui.main()
    except:
        traceback.print_exc()
Run Code Online (Sandbox Code Playgroud)

python py2exe

6
推荐指数
1
解决办法
1001
查看次数

Py2Exe应用程序被Windows Defender标记为恶意软件; 该怎么办?

我在Python 2.x,PyQT4和MySQLdb中为我的公司编写了一个应用程序,并使用py2exe打包.

最近,我对应用程序进行了一些更新,将其移植到Python 3.4和PySide.我还删除了MySQLdb依赖项并添加了Requests.我用Python 3新推出的py2exe打包了这个.

突然间,我被Windows防御者标记为我的可执行文件是恶意软件.这是日志条目:

Windows Defender has detected spyware or other potentially unwanted software.
 For more information please see the following:
http://go.microsoft.com/fwlink/?linkid=37020&name=BrowserModifier:Win32/Zwangi&threatid=144384
Name:BrowserModifier:Win32/Zwangi
ID:144384
Severity:High
Category:Browser Modifier
Path Found:file:C:\Users\alan.moore\Desktop\ticketuserclient3-beta1\ticketuserclient3\Contact tech support.exe
Detection Type:Concrete
Detection Source:Downloads and attachments
Status:Unknown
User:WILLIAMSON-TN\alan.moore
Process Name:C:\Windows\Explorer.EXE
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 为什么我被标记为恶意软件?我怎样才能确定原因?
  • 除了"允许"在需要部署的所有600多个工作站上进行此操作外,我该怎么办呢?
  • "检测类型:混凝土"是什么意思?

谢谢你的帮助.

更新:显然我在python3.4下使用py2exe编译的任何内容都会被识别出来.

我试过这个脚本:

import sys
import platform

print (sys.platform)
print ("".join(platform.uname))
Run Code Online (Sandbox Code Playgroud)

而这个setup.py

from distutils.core import setup
import os
import py2exe

setup(
    windows=[{"script":"test.py", "dest_base":"Contact tech support"},],
    options= {
        "py2exe" : {
            "compressed":1,
            "optimize":2,
            "bundle_files":3 …
Run Code Online (Sandbox Code Playgroud)

windows py2exe malware false-positive python-3.x

6
推荐指数
1
解决办法
2422
查看次数

cx_freeze - 包括我自己的模块?

我有一个用PyQt4构建的小应用程序,我试图用cx_freeze冻结,但是我遇到了cx_freeze的问题,包括我自己的应用程序工作所需的模块.

我有两个在我的应用程序中导入的模块,这些模块位于应用程序所在的文件夹上方.即:

申请路径:

Python的\ DataViewer的-PyQt4的\ DataViewer.py

其他模块:

Python\My Analysis Packages\Ephystools

Python\My Analysis Packages\PrairieAnalysis

在我的应用程序中,我使用(如果它们不在我的python路径中)导入这些

sys.path.append(os.path.abspath('../My Analysis Packages'))
Run Code Online (Sandbox Code Playgroud)

我尝试在setup.py文件中的'includes'和'packages'中包含PrairieAnalysis和EphysTools.我也试过包括"我的分析包".我也试过提供这些路径.

它们都包含init .py文件,因为实际的应用程序能够很好地导入它们.

如果我将PrairieAnalysis和/或EphysTools放在'includes'列表中,那么setup.py build会返回一个ImportError:

 File "C:\Anaconda3\lib\site-packages\cx_Freeze\finder.py", line 386, in _ImportModule
    raise ImportError("No module named %r" % name)
ImportError: No module named 'PrairieAnalysis'
Run Code Online (Sandbox Code Playgroud)

如果我将它们从'includes'中取出,则setup.py构建完成,但是当我打开应用程序时,我得到同样的错误.

我查看了各种cx_freeze模块导入问题,但似乎没有人处理过这个特定的场景.

我的实际setup.py:

# -*- coding: utf-8 -*-

import sys
from cx_Freeze import setup, Executable

base = None
if sys.platform == 'win32':
    base = 'Win32GUI'

options = {
    'build_exe': {
        'includes': ['atexit', 'PrairieAnalysis', 'EphysTools'],
    }
}

executables = [ …
Run Code Online (Sandbox Code Playgroud)

python py2exe importerror cx-freeze

6
推荐指数
1
解决办法
7308
查看次数

最大递归深度超过py2App

我已经彻底搜索了谷歌,但无法找到答案.当我尝试用py2app构建时,我得到了这个错误:它可能是由于在代码中使用诸如'gspread'之类的模块引起的吗?或者因为我正在使用wxpython?令人不安的是'python setup.py py2app -A'没有问题.

running py2app
creating /Users/Bailejor/Desktop/build/bdist.macosx-10.5-x86_64/python2.7-standalone/app
creating /Users/Bailejor/Desktop/build/bdist.macosx-10.5-x86_64/python2.7-standalone/app/collect
creating /Users/Bailejor/Desktop/build/bdist.macosx-10.5-x86_64/python2.7-standalone/app/temp
creating build/bdist.macosx-10.5-x86_64/python2.7-standalone/app/lib-dynload
creating build/bdist.macosx-10.5-x86_64/python2.7-standalone/app/Frameworks
*** using recipe: virtualenv ***
*** using recipe: ftplib ***
*** using recipe: lxml ***
*** using recipe: PIL ***
*** using recipe: xml ***
*** using recipe: sip ***
*** using recipe: matplotlib ***
*** using recipe: pydoc ***
*** using recipe: docutils ***
*** using recipe: scipy ***
Traceback (most recent call last):
  File "setup.py", line 18, in <module>
    setup_requires=['py2app'],
  File "//anaconda/lib/python2.7/distutils/core.py", …
Run Code Online (Sandbox Code Playgroud)

python py2exe py2app

6
推荐指数
1
解决办法
1316
查看次数