Pit cuando pyinstaller empaqueta scripts de python (py) como archivos exe (os y sys)

Hoy, escribí un script por lotes simple. Para que lo utilicen colegas que no tienen un entorno, está empaquetado en un archivo ejecutable único ejecutable a través de pyinstaller -F xxx.py

Cuando se depuró el archivo py, todo fue normal, pero después de empaquetarlo en un archivo exe, la operación pareció ser un flashback. Finalmente, a través del método del comando cmd. \ Xxx.exe, se encontró que ocurría el error WinError 123. A través de la investigación, se encontró que después de empaquetar pyinstaller, os.path y sys.path estaban vacíos o algunos valores inesperados. Debe haber un principio, pero no hay más investigación aquí.

Puede empaquetar y probar el siguiente código usted mismo:

import sys
import os
print(sys.path[0])
print(sys.argv[0])
print(os.path.dirname(os.path.realpath(sys.executable)))
print(os.path.dirname(os.path.realpath(sys.argv[0])))
————————————————
版权声明:本文为CSDN博主「买菇凉的小火披」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31801903/article/details/81666124

Excepción después de ejecutar exe

Ponga el código del problema a continuación.

import os
import sys
import shutil
import time

#%%
#获取当前路径下所有文件夹
#os.path.abspath(__file__)

#1.获取当前文件所在路径
now_path = os.path.abspath(__file__)

print(now_path)
#切换工作路径到当前的空间
os.chdir(now_path)

#显示文件夹名
folders_path = os.listdir()
#判断文件数量,筛选获取只有1个文件的文件路径
#folder_name_noly_one = []
#%%
for i in folders_path:
    path = now_path + '\\' + i
    if os.path.isdir(i) and len(os.listdir(i)) == 1:
        file_path = path + '\\' + os.listdir(i)[0]
        #os.path.abspath(os.listdir(i))
        #i = os.path.abspath(os.listdir(i))
        #folder_name_noly_one.append(i)
        shutil.move(file_path,now_path)
        os.rmdir(path)
    else:
        continue

print('运行完成!')
time.sleep(5)
#将其内部文件剪切出来

El último código modificado

#%%
import os
import sys
import shutil
import time
import tkinter as tk
from tkinter import filedialog
#%%
#获取当前路径下所有文件夹
#os.path.abspath(__file__)

#1.获取当前文件所在路径
now_path = filedialog.askdirectory()

print(now_path)
#切换工作路径到当前的空间
os.chdir(now_path)

#显示文件夹名
folders_path = os.listdir()
#判断文件数量,筛选获取只有1个文件的文件路径
#folder_name_noly_one = []
#%%
for i in folders_path:
    path = now_path + '\\' + i
    if os.path.isdir(i) and len(os.listdir(i)) == 1:
        file_path = path + '\\' + os.listdir(i)[0]
        #os.path.abspath(os.listdir(i))
        #i = os.path.abspath(os.listdir(i))
        #folder_name_noly_one.append(i)
        shutil.move(file_path,now_path)
        os.rmdir(path)
    else:
        continue

print('运行完成!')
time.sleep(5)
#将其内部文件剪切出来



#删除空文件夹

# %%

Supongo que te gusta

Origin blog.csdn.net/u010472858/article/details/105499736
Recomendado
Clasificación