我在Windows系统上使用Python 2.6和cx_Freeze 4.1.2.我已经创建了setup.py来构建我的可执行文件,一切正常.
当cx_Freeze运行时,它会将所有内容移动到build
目录中.我有一些其他文件,我想包含在我的build
目录中.我怎样才能做到这一点?这是我的结构:
src\
setup.py
janitor.py
README.txt
CHNAGELOG.txt
helpers\
uncompress\
unRAR.exe
unzip.exe
Run Code Online (Sandbox Code Playgroud)
这是我的片段:
建立
Run Code Online (Sandbox Code Playgroud)( name='Janitor', version='1.0', description='Janitor', author='John Doe', author_email='john.doe@gmail.com', url='http://www.this-page-intentionally-left-blank.org/', data_files = [ ('helpers\uncompress', ['helpers\uncompress\unzip.exe']), ('helpers\uncompress', ['helpers\uncompress\unRAR.exe']), ('', ['README.txt']) ], executables = [ Executable\ ( 'janitor.py', #initScript ) ] )
我似乎无法让这个工作.我需要一个MANIFEST.in
文件吗?
当我使用时,cx_Freeze
我KeyError: 'TCL_Library'
在构建我的pygame程序时得到了一个keyerror .为什么我会得到这个,我该如何解决?
我的setup.py如下:
from cx_Freeze import setup, Executable
setup(
name = "Snakes and Ladders",
version = "0.9",
author = "Adam",
author_email = "Omitted",
options = {"build_exe": {"packages":["pygame"],
"include_files": ["main.py", "squares.py",
"pictures/Base Dice.png", "pictures/Dice 1.png",
"pictures/Dice 2.png", "pictures/Dice 3.png",
"pictures/Dice 4.png", "pictures/Dice 5.png",
"pictures/Dice 6.png"]}},
executables = [Executable("run.py")],
)
Run Code Online (Sandbox Code Playgroud) 我按照指示创建了我的setup.py文件,但实际上我并不知道接下来要做什么.在命令行中键入"python setup.py build"只会出现语法错误.
那么,我该怎么办?
setup.py:
from cx_Freeze import setup, Executable
setup(
name = "On Dijkstra's Algorithm",
version = "3.1",
description = "A Dijkstra's Algorithm help tool.",
exectuables = [Executable(script = "Main.py", base = "Win32GUI")])
Run Code Online (Sandbox Code Playgroud) 我想我在过去的20个小时内尽我所能,但似乎没有任何效果.我的应用程序正在运行和工作 - 就像它应该 - 我唯一的问题是我无法.app
从它创建一个包.我都尝试Py2App
和cx_Freeze
,但他们的非正常工作.由于多平台支持,我会坚持使用后者 - 如果可能的话.
该setup.py
如下所示:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
OPTIONS = {'build_exe': {'includes': ['sip',
'PyQt5',
'PyQt5.QtCore',
'PyQt5.QtGui',
'PyQt5.QtWidgets',
'PyQt5.QtMultimediaWidgets',
'PyQt5.QtMultimedia',
'PyQt5.QtNetwork']}}
EXECUTABLES = [Executable('main.py', base=base)]
NAME = 'coublet'
VERSION = '0.5.70'
setup(name = NAME,
version = VERSION,
options = OPTIONS,
executables = EXECUTABLES)
Run Code Online (Sandbox Code Playgroud)
我有的错误信息是这样的:
objc[28404]: Class NotificationReceiver is implemented in both
/Users/.../build/coublet-0.5.70.app/Contents/MacOS/QtWidgets and
/usr/local/Cellar/qt5/5.3.1/lib/QtWidgets.framework/Versions/5/QtWidgets. One of …
Run Code Online (Sandbox Code Playgroud) 这有点复杂,可能需要一些时间.
基本的问题是,在Linux上(在我的测试案例中是Ubuntu)我的程序(Omnitool)的cx-freeze'd版本无法创建子进程.但它适用于Windows 7.或者直接从源代码运行.不幸的是,它并不像遗忘那么简单freeze_support
.
问题
启动子进程的默认行为是X服务器崩溃.具体如下:
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
after 23 requests (23 known processed) with 0 events remaining.
[xcb]Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
Omnitool: ../../src/xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
没有python回溯.我试图XInitThreads
用ctypes 手动调用,它返回0表示成功设置,但无论如何崩溃.在崩溃之前Shorty,pygame UI漏掉了,所以我希望有一些错误.
现在,设置multiprocessing.set_start_method()
更改问题:"forkserver"给了我这个可爱的回溯,它什么也没告诉我:
相反,将它设置为spawn只是让它不做任何事情.__main__
正如我可以用打印件证明的那样,该过程开始并经历,但从不进入子过程的目标函数.
试着自己
确保你有使用python 3.4的Ubuntu或类似的Linux.然后获取所有依赖项:
从git下载omnitool作为zip或克隆:https …
我正在使用wxPython开发一个Python应用程序并使用cxFreeze将其冻结.除了下面这一点之外,一切似乎都很顺利:
当我运行cxFreeze创建的可执行文件时,会弹出一个空白控制台窗口.我不想表现出来.有什么方法可以隐藏它吗?
它似乎没有在cxFreeze网站上记录,并且谷歌搜索没有与Py2Exe的一些类似的类型问题分开.
谢谢.
有人能告诉我哪两个更好的捆绑Python应用程序--cx_Freeze或PyInstaller?我正在寻找基于以下因素的比较:
我有一些我写的.py文件,我想在另一台机器上运行.目标机器没有安装python,我无法通过策略"安装"它.我能做的是复制文件,运行我的东西,然后删除它们.
我尝试的是将我的开发python文件夹转移到目标机器并cd到python文件夹并运行python.exe /path/to/.py/file
.它给了我一个错误,说python.dll没有注册.如果我注册的DLL可能会让我远离"违规政策"行.
无论如何,我可以在没有实际安装python的机器上完成运行python文件(试图让py2exe现在正常工作,但这很痛苦)?
我在win-8使用python 3.4.我想从python代码获取.exe程序.我了解到它可以通过cx_Freeze来完成.
在MS-DOS命令行中,我写了pip install cx_Freeze来设置cx_Freeze.它已安装但无法正常工作.
(当我将cxfreeze写入命令行时,我收到此警告:C:\ Users\USER> cxfreeze'cxfreeze'未被识别为内部或外部命令,可运行程序或批处理文件.)
(我还通过环境变量将cxfreeze的位置添加到"PATH")
任何帮助都会受到感谢.
为什么多处理模块需要在"冻结"以生成Windows可执行文件时调用特定函数才能工作?
cx-freeze ×10
python ×9
python-3.x ×3
py2exe ×2
pyinstaller ×2
batch-file ×1
bundle ×1
distutils ×1
executable ×1
macos ×1
pyqt5 ×1
python-3.4 ×1
ubuntu ×1
wxpython ×1