41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""打包脚本 - 生成独立可执行文件"""
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
import shutil
|
|
|
|
def main():
|
|
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
for d in ['build', 'dist']:
|
|
if os.path.exists(d):
|
|
shutil.rmtree(d)
|
|
|
|
print("开始打包...")
|
|
|
|
sep = ";" if sys.platform == "win32" else ":"
|
|
|
|
cmd = [
|
|
sys.executable, "-m", "PyInstaller",
|
|
"--onefile",
|
|
"--name", "ai-chat-converter",
|
|
f"--add-data=src{sep}src",
|
|
"--hidden-import", "tiktoken_ext.openai_public",
|
|
"--hidden-import", "tiktoken_ext",
|
|
"--hidden-import", "dotenv",
|
|
"--collect-data", "tiktoken",
|
|
"--collect-all", "watchdog",
|
|
"--collect-all", "dotenv",
|
|
"src/main.py"
|
|
]
|
|
|
|
subprocess.run(cmd, check=True)
|
|
|
|
exe = "dist/ai-chat-converter.exe" if sys.platform == "win32" else "dist/ai-chat-converter"
|
|
size = os.path.getsize(exe) / 1024 / 1024
|
|
print(f"\n✓ 打包完成: {exe} ({size:.1f} MB)")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|