软件包版本
- aligo 6.2.4
- tqdm 4.64.1
- pyinstaller 6.0.0
- pyinstaller-hooks-contrib 2024.7
运行一切正常,进度条显示正常
import logging
logging.basicConfig(filename='h.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
from aligo import Aligo
ali = Aligo()
up_file = ali.upload_file('test.txt')
print(up_file)
pyinstaller -F 打包运行也一切正常
但是去掉窗口 pyinstaller -Fw 打包报错,tqdm没有write方法
不清楚什么问题,tqdm方法降版本后不兼容aligo最新版。
报错位置如下:
def _put_data(self, file_path: str, part_info: CreateFileResponse, file_size: int) -> Union[BaseFile, Null]:
"""上传数据"""
with open(file_path, 'rb') as f:
progress_bar = tqdm(total=file_size, unit='B', unit_scale=True, colour='#21d789')
for i in range(len(part_info.part_info_list)):
part_info_item = part_info.part_info_list[i]
data = f.read(Create.__UPLOAD_CHUNK_SIZE)
try:
resp = self._session.put(data=data, url=part_info_item.upload_url)
if resp.status_code == 403:
raise requests.exceptions.RequestException(f'upload_url({part_info_item.upload_url}) expired')
except requests.exceptions.RequestException:
part_info = self.get_upload_url(GetUploadUrlRequest(
drive_id=part_info.drive_id,
file_id=part_info.file_id,
upload_id=part_info.upload_id,
part_info_list=[UploadPartInfo(part_number=i.part_number) for i in part_info.part_info_list]
))
part_info_item = part_info.part_info_list[i]
resp = self._session.put(data=data, url=part_info_item.upload_url)
if resp.status_code == 403:
raise '这里不对劲,请反馈:https://github.com/foyoux/aligo/issues/new'
progress_bar.update(len(data))
progress_bar.close()
应该是tqdm或者pyinstaller的锅,或者有什么配置
只好修改源码中tqdm写法:
去掉progress_bar ,使用最简单的进去条显示
def _put_data(self, file_path: str, part_info: CreateFileResponse, file_size: int) -> Union[BaseFile, Null]:
"""上传数据"""
with open(file_path, 'rb') as f:
# progress_bar = tqdm(total=file_size, unit='B', unit_scale=True, colour='#21d789')
for i in tqdm(range(len(part_info.part_info_list))):
part_info_item = part_info.part_info_list[i]
data = f.read(Create.__UPLOAD_CHUNK_SIZE)
try:
resp = self._session.put(data=data, url=part_info_item.upload_url)
if resp.status_code == 403:
raise requests.exceptions.RequestException(f'upload_url({part_info_item.upload_url}) expired')
except requests.exceptions.RequestException:
part_info = self.get_upload_url(GetUploadUrlRequest(
drive_id=part_info.drive_id,
file_id=part_info.file_id,
upload_id=part_info.upload_id,
part_info_list=[UploadPartInfo(part_number=i.part_number) for i in part_info.part_info_list]
))
part_info_item = part_info.part_info_list[i]
resp = self._session.put(data=data, url=part_info_item.upload_url)
if resp.status_code == 403:
raise '这里不对劲,请反馈:https://github.com/foyoux/aligo/issues/new'
# progress_bar.update(len(data))
#
# progress_bar.close()