pyinstaller打包python非web项目网上资料特别多,但就对于web项目少之又少。
今天在打包Python的tornado项目时,出现无法找到静态文件和html,但是在非打包时却运行正常,浏览器能够正常访问,打包之后就出现这个问题。
查找相关资料之后发现,-F 这个参数和templates static这两个的文件的路径问题。
-F
这个不建议在web项目打包时使用,因为这个参数虽然使整个项目只有入口文件,
但是当整个项目运行之后,它会生成一个临时文件,并且这个临时文件夹是随机命名的,放在 /tmp/随机文件夹/ 里面
有兴趣可以使用tornado试试,获取当前路径并打印即可。
下面是解决方案,用一个获取当前文件夹路径的方法,获取templates static的路径即可,使得项目路径可以随时随地的变化,不受其他因素影响。
def src_path():
if hasattr(sys, '_MEIPASS'):
base_dir = sys._MEIPASS
else:
base_dir = os.path.abspath('.')
return base_dir
剩下的在tornado或者其他Python web项目的静态路径调用该方法就行。
templates static需要放到打包之后的dist下面,或者根据自己项目的位置放进去
希望能交流更多技术,关注小白的微信公众号吧。