Pycharm 里 RUN正常,打包exe后 input 文本不显示

2020-辉太浪 2020-08-09 11:41:53
Pycharm里Run显示正常,打包完后input 不显示.新手找不到问题,特来求教.谢谢!
由于刚刚注册只有50分. 以后会经常打卡,哈哈.
系统是Windws10 python 3.7 pycharm是2020最新版本 pyinstaller也是最新版本






import sys
import os
import datetime


print('------欢迎使用------')
kehumingzi = input('客户名字:')
shijian = datetime.datetime.now()
cishu = 1
jieshu = 1


class Logger(object):
def __init__(self, filename="Default.log"):
self.terminal = sys.stdout
self.log = open(filename, "a")

def write(self, message):
self.terminal.write(message)
self.log.write(message)

def flush(self):
pass


path = os.path.abspath(os.path.dirname(__file__))
type = sys.getfilesystemencoding()
sys.stdout = Logger(f'{kehumingzi}.txt')

print(path)
print(os.path.dirname(__file__))
print('------------------')



print(f'\n\n\n\n\n\n\n——————————{kehumingzi}最新一单———————————————————————————————————\n\n\n')

print(shijian)
while cishu <= 998:


if cishu < jieshu:

break

print('\n\n-------开始分割线-------')
print(' ')

print(f' 第{cishu}个尺寸 ')

gao = int(input("高:"))

print(f'{gao}')

kuan = int(input("宽:"))

print(f'{kuan}')

liu = int(input("留:"))

if liu <= 0:

print('不留高')

else:

print(f'{liu}')




ge = int(input("数量:"))
print(f'{ge}个')












if liu > 0:

zhongzhu = int(input('中柱数量:'))
print(f'中柱{zhongzhu}根')


if 2> zhongzhu > 0:
print(' 长度mm 数量')


边封 = print(f'边封 {kuan} = {ge * 2}根')
上中下滑 = print(f'上中下滑 {kuan-38} = {ge}根')
上下方 = print(f'上下方 {(kuan-132)/2} = {ge*4}根')
外光勾企 = print(f'外光勾企 {liu-60} = {ge}根')
内光勾企 = print(f'内光勾企 {liu-70} = {ge}根')
中柱 = print(f'中柱 {gao-liu-30} = {ge}根')

print('----玻璃↓----')

外扇玻璃 = print(f'外扇玻璃:宽{((kuan - 132) / 2) - 10} X 高{(liu - 60) - 90} = {ge}片')
内扇玻璃 = print(f'内扇玻璃:宽{((kuan-132)/2)-10} X 高{(liu-70)-90} = {ge}片')
固定玻璃 = print(f'固定玻璃:宽{(kuan-7-2.5)/2-0.7} X 高{(gao-liu)-0.7} = {ge*2}片')

print(' ')
print(' ')
print('-------结束分割线-------')
print(' ')
print('按 0 键继续输入下一个尺寸')
print(' ')
jieshu = int(input('按 999 回车 保存并退出'))

cishu += 1



elif 3> zhongzhu > 1:
print(' 长度mm 数量')
边封 = print(f'边封 {kuan} = {ge * 2}根')
上中下滑 = print(f'上中下滑 {kuan - 38} = {ge}根')
上下方 = print(f'上下方 {(kuan - 132) / 2} = {ge * 4}根')
外光勾企 = print(f'外光勾企 {liu - 60} = {ge}根')
内光勾企 = print(f'内光勾企 {liu - 70} = {ge}根')
中柱 = print(f'中柱 {gao - liu - 30} = {ge*2}根')

print('----玻璃↓----')

外扇玻璃 = print(f'外扇玻璃:宽{((kuan - 132) / 2) - 10} X 高{(liu - 60) - 90} = {ge}片')
内扇玻璃 = print(f'内扇玻璃:宽{((kuan - 132) / 2) - 10} X 高{(liu - 70) - 90} = {ge}片')
固定玻璃 = print(f'固定玻璃:宽{(kuan - 7 - 2.5) / 2 - 0.7} X 高{(gao - liu) - 0.7} = {ge * 3}片')

print(' ')
print(' ')
print('-------结束分割线-------')
print(' ')
print('按 0 键继续输入下一个尺寸')
print(' ')
jieshu = int(input('按 999 回车 保存并退出'))

cishu += 1

else:

print(' ')
print(' ')
print('-------结束分割线-------')
print(' ')
print('按 0 键继续输入下一个尺寸')
print(' ')
jieshu = int(input('按 999 回车 保存并退出'))

cishu += 1
else:

尺寸 = print(' 长度mm 数量')
边封 = print(f'边封 {gao} = {ge*2}根')
上下滑 = print(f'上下滑 {kuan - 38} = {ge}根')
上下方 = print(f'上下方 {(kuan - 140) / 2} = {ge*4}根')
外光勾企 = print(f'外光勾企 {gao - 50} = {ge}根')
内光勾企 = print(f'内光勾企 {gao - 60} = {ge}根')




print('----玻璃↓----')

外扇玻璃 = print(f'外扇玻璃:{((kuan - 140) / 2) - 10} X {(gao - 50) - 90} = {ge}片')
内扇玻璃 = print(f'内扇玻璃:{((kuan - 140) / 2) - 10} X {(gao - 60) - 90} = {ge}片')

print(' ')
print(' ')
print('-------结束分割线-------')
print(' ')
print('按 0 键继续输入下一个尺寸')
print(' ')
jieshu = int(input('按 999 回车 保存并退出'))

cishu += 1
...全文
534 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
2020-辉太浪 2020-08-21
  • 打赏
  • 举报
回复
引用 4 楼 qq_39972887 的回复:
__file__加引号是因为我在notebook里测试的时候不加引号提示出错。 实际上path也可以用另一个表达方式 path=os.path.abspath(sys.argv[0])
谢谢你解决了我的问题,谢谢.
qq_39972887 2020-08-13
  • 打赏
  • 举报
回复
__file__加引号是因为我在notebook里测试的时候不加引号提示出错。 实际上path也可以用另一个表达方式 path=os.path.abspath(sys.argv[0])
qq_39972887 2020-08-13
  • 打赏
  • 举报
回复
不知道为什么打包后出错。但是我把class logger那一段代码改成下面这样后,我测试过打包后没错了。 class Logger(object): def __init__(self, filename="Default.log", stream=sys.stdout): self.terminal = stream self.log = open(filename, "a") def write(self, message): self.terminal.write(message) self.terminal.flush() self.log.write(message) self.log.flush() def flush(self): pass path = os.path.abspath(os.path.dirname('__file__')) type = sys.getfilesystemencoding() sys.stdout = Logger(f'{kehumingzi}.txt',sys.stdout)
  • 打赏
  • 举报
回复
输出到 txt用句柄哦,直接print肯定会有问题的,而且也不需要去获取路径,python默认输出就是在你py文件的相对路径
2020-辉太浪 2020-08-09
  • 打赏
  • 举报
回复
这一段是保存print输出到TXT文档的代码,取消这一段打包以后input输出就正常..
class Logger(object):
    def __init__(self, filename="Default.log"):
        self.terminal = sys.stdout
        self.log = open(filename, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass


path = os.path.abspath(os.path.dirname(__file__))
type = sys.getfilesystemencoding()
sys.stdout = Logger(f'{kehumingzi}.txt')

print(path)
print(os.path.dirname(__file__))
print('------------------')
tianfang 2020-08-09
  • 打赏
  • 举报
回复
清除一下预编译的pyc试试

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧