将python打包为exe

最近和结构的同事一起玩three.js,做了一个简易的展示,先启动一个python的http server,然后通过浏览器访问httpserver来呈现3D图像。在操作中,发现同事对命令行启动python非常不习惯,于是将python的.py文件打包为exe,只要放在文件夹下,双击即可执行。
python服务器代码用AI生成如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import http.server
import socketserver
from http.server import SimpleHTTPRequestHandler
import threading
import webbrowser
import time

PORT = 8000

class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)

Handler = CORSRequestHandler

def open_browser():
time.sleep(3)
print("Opening default browser: ", webbrowser.get().name)
webbrowser.open("http://127.0.0.1:8000/")

with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
threading.Thread(target=open_browser).start()
httpd.serve_forever()

启动命令行,进入目录,执行打包软件安装:
pip install -i https://pypi.python.org/simple pyinstaller

最开始用华为云的源,没有这个包,指定了原始源,自动安装一些关联包后返回成功。

然后在目录下:
pyinstaller –onefile httpserver.py
该程序会自动打包python和相关依赖到文件中,注意,这个依赖只管python的,如果有数据或者图片,需要额外添加
打完包后,在dist目录会有一个exe文件,需要用的时候,拷贝到指定目录,双击就可以直接执行了。