- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在用 Python 开发一个小工具,它主要是在一个文件夹上启动一组脚本。我需要将它打包到一个独立的二进制文件中,我正在为它使用 py2exe。
我当前的代码使用 os.path.listdir()
获取文件夹中的所有 .py 文件,然后使用 execfile()
函数启动其中一些文件基于 PyQT 界面上的用户输入。
如果通过主 Python 文件执行,我的代码会按预期工作,但在使用 py2exe 编译时会失败。异常(exception)情况是:
IOError: [Errno 2] No such file or directory
对于使用 execfile()
启动的 python 文件。
我目前正在使用 "bundle_files": 1
和 zipfile = None
进行捆绑。我试图包含这些与包含和包混淆的文件,但没有运气。你能帮我正确配置py2exe吗?
这是我当前的 setup.py
:
from distutils.core import setup
import py2exe
import os
#Python modules excluded from binary file
mod_excludes = [
"Tkinter",
"doctest",
"unittest",
"pydoc",
"pygments",
"pdb",
"email",
"_ssl",
"difflib",
"inspect"
]
#Avoid adding this dependencies
dll_excludes = [
"MSVCP90.dll",
"w9xpopen.exe"
]
#Force to exe
mod_includes = [
"sip"
]
package_includes = [
"app.payloads"
]
py2exe_options = {
"optimize": 2, # 0 (None), 1 (-O), 2 (-OO)
"includes": mod_includes,
"excludes": mod_excludes,
"dll_excludes": dll_excludes,
"packages": package_includes,
#"xref": False,
"bundle_files": 1,
"compressed": True
#"dist_dir": dist_dir
}
#TODO generar automaticamente la interfaz
setup(
windows=[{"script": "app.py",
"icon_resources": [(1, "app/gui/Res/app.ico")],
"uac_info": "requireAdministrator"}],
data_files=exe_files,
options={"py2exe": py2exe_options},
zipfile=None
)
我得到以下回溯:
Traceback (most recent call last):
File "app\gui\ui.pyo", line 22, in call_report
File "app\core\core.pyo", line 32, in generate_report
File "app\core\core.pyo", line 18, in launch_payload
IOError: [Errno 2] No such file or directory: 'C:\\Users\\my_user\\path\\to\\app\\dist\\app.exe\\app\\payloads\\autoruns.py'
最佳答案
Py2exe 仅包含 *.pyc
文件(或 .pyo
文件,如果您像您一样使用大于 0 的 "optimize"
)。由于您的错误消息提到了一个不存在的 *.py
文件:
IOError: [Errno 2] No such file or directory: 'C:\Users\my_user\path\to\app\dist\app.exe\app\payloads\autoruns.py'
,可能是这个原因。
一般来说,我建议不要使用execfile()
。而是编写自己的包。如果您在应用程序代码中的某处导入它,Py2exe 将自动包含该包。该包应包含您要动态加载的文件。您可以使用此代码:
my_module = __import__('my_package.module_name')
字符串 'module_name'
可以来自用户通过 GUI 输入。
关于python - 如何在 py2exe 上捆绑使用 execfile() 启动的 .py 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484354/
我遇到了问题,甚至不确定从哪里开始进行故障排除。 我正在使用 slightly modified mocha-casperjs . CasperJS 是 PhantomJS 的包装器。我正在尝试在测试
我想在我的 GUI 中有一个文本框和一个按钮,单击按钮时,它应该获取文本并将其存储在其他文件的变量中,然后运行其他文件。 我希望用户输入访问 token ,GUI 应将其保存在utilities.py
python 文档指出“execfile() 不能可靠地用于修改函数的局部变量。”在页面上http://docs.python.org/2/library/functions.html#execfil
我正在尝试使用 Tkinter 为我的 Python 程序制作一个启动器。我使用了 execfile 函数,幸运的是它打开了目标 GUI。但是,所有按钮都不起作用,它会说大多数函数引用的全局变量未定义
我的结构是这样的: c |-myMain.py |-.....\someDir |-startup.py |-subDir
我有这个功能: #This function loads the tokens for the specified account. If the tokens are not found, it q
标题中提出的问题可能是the XY-Problem的情况, 但我找不到更简洁的描述。我想通过在每个脚本上运行 execfile(filename) 来测试一些 python 脚本,然后查看它们是否触发
我正在尝试将信息加载到用户定义的函数中以供进一步处理。由于输入文件必须由非程序员生成,因此我选择了以下格式: #contents of vessel_data.txt hull_length = 10
我遇到的问题与 this question 中的第一个问题类似,据我所知没有得到答复。 我有一个文件“config.py”,其中包含一个类要使用的大量参数(这个 config.py 文件会更改),但是
是否可以在不使用 if/else 语句的情况下中断使用 execfile 函数调用的 Python 脚本的执行?我试过 exit(),但它不允许 main.py 完成。 # main.py print
我在 ipython shell 内部工作,经常需要重新加载包含正在构建的函数的脚本文件。 在我的 main.py 中我有: def myreload(): execfile("main.py") e
我有一个运行多个 python 代码的代码,如下所示: execfile("1.py") execfile("2.py") execfile("3.py") 但是偶尔上述代码之一会出现错误,我会将 e
我尝试执行 *.exe 文件,但得到: 执行错误:{ 错误:spawn ${__dirname}/install.exe ENOENT 代码: var execFile = require('chil
我正在尝试从用户那里获取文件名,然后使用 execfile() 来执行该文件。下面是我的代码: print "Please enter the name of the file" filename =
我有一个包含序言信息的 config.py 脚本。我可以使用 execfile() 函数来读取配置文件的内容。 execfile("config.py") print PREAMBLE >>> "AB
我正在尝试使用他们的二进制文件连接到 browserstack 并将我的 key 作为参数传递。如果我在终端窗口中执行此操作: ./BrowserStackLocal --key ${BROWSERS
我把一个方法放在文件 mymodule.py 中: def do_something(): global a a=1 如果我尝试 >>> execfile('mymodule.py')
在我的一些 Django 应用程序中,我使用 settings_local.py 文件来覆盖在不同环境(例如开发、测试和生产)中不同的设置。我最初使用以下代码将其内容包含在 settings.py 中
我有一个 Node 脚本,它以这种方式调用外部程序 (PluginManager.exe): const util = require('util'); const execFile = util.p
我使用child_process通过phantomjs执行yslow.js。示例(CLI): phantomjs yslow.js --info all --format json url 我们可以
我是一名优秀的程序员,十分优秀!