核心语句:
pyinstaller -F main.py -p py_dir
详细描述:
test 目录下有三个 py 文件,分别为 cmmd.py、hello.py、test2/word.py,
依赖关系如下(A>B 表示 A 依赖于 B,或者说 A 中从 B 中 import 一些内容)
cmmd.py > hello.py > word.py
三个文件内容分别为:
# cmmd.py
# -*- coding: utf-8 -*-
from time import sleep
from hello import show
def main():
count = 1
while count <= 5:
show(count)
sleep(1)
count += 1
print("Bye!")
if __name__ == "__main__":
main()
# hello.py
# -*- coding: utf-8 -*-
from test2.word import what
def show(nbr):
res = "[ No.{} | Test: {}.]".format(nbr, what())
print(res)
# word.py
# -*- coding: utf-8 -*-
def what():
return "Hello, Python"
通过依赖关系可以知道,cmmd.py 是主程序,即入口,
所以,在test目录下运行打包命令:
# -F 打包成一个 exe
# -p 相关的文件的路径,即所需的其他文件所在目录,
# 可以用路径分隔符指定多个路径,windows用分号';',linux用冒号':'
# 这里是在test目录下运行的命令,所以 -p 后边跟的是 相对路径 test2
# -p 前边写的是主入口程序的路径,这里写的相对路径 cmmd.py
pyinstaller -F cmmd.py -p test2
打包的过程的关键信息:
可见,之前添加的 -p test2,被添加到了PYTHONPATH 中。
打包后的 exe 运行结果:
The end.