Python项⽬打包成⼆进制的⽅法
Python项⽬打包
python本⾝是⼀种脚本语⾳,发布的话,直接发布源代码就可以了,但是,可能有些公司并不想发布源代码,那么,就涉及到打包了,⽹上有很的打包教程,其实我也没有认真去研究,因为我只想简单点,所以,我打算直接编译成pyc⼆进制⽂件来发布,就可以了。
问题
编译成⼆进制⽂件(*.pyc)之后,⽂件名都变了,模块之间怎么引⽤?
⽹上的例⼦,⼤都是对单个⽂件编译的介绍,对整个⽬录编译的话,也都是输出到相应的⽂件夹下,需要单独抽取出来,发布。
解决问题
⼀般编译之后的⽂件命名为:⽐如我的源⽂件为test.py,编译后输出到__pycache__⽂件夹下test.cpython-37.pyc,要保持模块引⽤不改变,那么必须在编译之后重命名为test.pyc⽂件,批注:37是因为我使⽤的python版本为3.7.4所以含有37,其他版本要做相应的调整。
需要按照原来的项⽬⽬录结构输出pyc⽂件才能保证模块之间调⽤没有问题。
编码实现
import os
import shutil
import compileall
from pathlib import Path
versions = ".cpython-37"
pycache = "__pycache__"
build_dir = "build"
root = os.getcwd()
print("正在编译⽂件...请等待...")
compileallpile_dir(root) # 编译
build = Path(root,build_dir)
ists():
print("正在移除build⽬录...请等待...")
<(build)
print("正在复制⽂件...请等待...")
for root, dirs, files in os.walk(build): # 开始遍历⽂件
# root 表⽰当前正在访问的⽂件夹路径
# dirs 表⽰该⽂件夹下的⼦⽬录名list
# files 表⽰该⽂件夹下的⽂件list
# 遍历⽂件
for f in files:
src = os.path.join(root, f)
dswith(".py"):
dswith(".pyc"):
upper_dir = place(pycache,"")
dst = os.path.join(upper_place(versions,""))
for root, dirs, files in os.walk(build): # 移除缓存⽂件夹
print("正在移除缓存⽂件...请等待...")
dswith(pycache):
<(root)
print("打包完成...请查看⽬录:"+str(build))
注意⽂件中版本号的调整,基本上是通⽤的,所有的python项⽬都可以⽤拿来就⽤。代码很简单,但是很实⽤。python新建项目教程
⽜⼈之所以是⽜⼈,是因为你现在在踩的坑,他曾经都已经踩过了。
以上就是Python项⽬打包成⼆进制的⽅法的详细内容,更多关于Python项⽬打包成⼆进制的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论