【问题标题】:cx_freeze executable not working when I run through cmd in python当我在 python 中运行 cmd 时,cx_freeze 可执行文件不起作用
【发布时间】:2017-11-07 09:43:18
【问题描述】:

您好,我已经使用 cx_freeze 将我的脚本转换为 exe,但是当我运行它时它没有按预期工作

我的脚本:cmd.py

import sys
import pandas as pd
import numpy as np


for arg in sys.argv:
    print (arg)
print ("Hello World!")

我的setup.py

将两个脚本放在同一个文件夹中

import sys,os
from cx_Freeze import setup, Executable

os.environ['TCL_LIBRARY'] = r'C:\ProgramData\Anaconda3\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\ProgramData\Anaconda3\tcl\tk8.6'

setup(
    name = "On Dijkstra's Algorithm",
    version = "3.1",
    description = "A Dijkstra's Algorithm help tool.",
    executables = [Executable("cmd.py", base = "Win32GUI")])    

一个名为 build 的文件夹是用 cmd.exe 创建的,但是当我在 cmd 中运行以下行时

cmd one two 什么都没有发生, 请帮忙

【问题讨论】:

  • cmd.exe 是 Window 的 cmd 名称。使用其他名称...
  • 我编辑了名称并运行cmdl one twowindoes 错误消息框正在弹出
  • 我需要运行 cmdl sys.argv 还是 python cmdl sys.arg

标签: python cmd exe python-3.6 cx-freeze


【解决方案1】:

您将可执行文件的base 设置为Win32GUI,这意味着它应该只是一个没有控制台的GUI。通过这样做,Windows 不会使 stout 和 stderr 可用,并且您的打印件会进入未打印页面的神秘之地(换句话说,它们会丢失)。

您应该使用base="Console" 来查看您的打印件。

【讨论】:

  • 我对其进行了编辑并运行,但收到​​此错误G:\PyScripts\build\exe.win-amd64-3.6>cmdl.exe one two Fatal Python error: Py_Initialize: unable to load the file system codec Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\encodings\__init__.py", line 31, in <module> ModuleNotFoundError: No module named 'codecs'
  • 您的脚本已经作为 Win32GUI 执行,只是它唯一做的就是打印,因为您看不到打印(请参阅我的第一个答案),所以您什么也看不到。
  • 我编辑到 base="Console" 并再次运行 python setup.py build 以创建一个 bew 构建
  • 您的新错误是 cx_freeze (see issue) 的已知问题。根据我在 github 上看到的内容,它已在最新版本 6.0b1 中修复,因此请尝试更新您的 cx_freeze 版本。
  • 它是最新的 :( G:\PyScripts\build\exe.win-amd64-3.6>python -m pip install cx_Freeze --upgrade Requirement already up-to-date: cx_Freeze in c:\programdata\anaconda3\lib\site-packages
猜你喜欢
  • 2019-01-27
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多