Ubuntu18.04打包可执行python文件详细总结

Ubuntu18.04打包可执行python文件过程详细

    • Ubuntu18.04打包可执行python文件示例
  • 一、Ubuntu18.04相关编译环境
  • 二、操作步骤
    • 1.代码编译指令:
    • 2.打包之后查看文件
    • 3.一些其他问题:
  • 总结


Ubuntu18.04打包可执行python文件示例

因为工作项目需求,对于写好的python程序需要在Linux内核操作系统上进行部署,同时为了更便捷的处理不同计算机以及安装环境,或者是环境移植的麻烦,本地物理机采用Ubuntu 18.04系统,本地端配置pycharm文件,进行代码打包,并测试。


下面采用带有sklearn实例代码可供参考

一、Ubuntu18.04相关编译环境

示例:Ubuntu相关环境,以及pycharm相关配置,请参考:
系统安装:https://blog.csdn.net/baidu_36602427/article/details/86548203
pycharm环境配置:https://blog.csdn.net/ezhchai/article/details/80423706
pycharm Ubuntu快捷方式配置:https://blog.csdn.net/qq_20515461/article/details/90745100
对于要不更换国内源:软件服务器选择为中国就行,匹配一个好用的,python有些安装包可以在pycharm环境里打开终端安装,建议 后缀加上清华源
示例代码:pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

二、操作步骤

1.代码编译指令:

大型py程序不建议直接打包为一个文件,中间可能存在某些问题,比如遗漏模块,运行库报错等,遇到错误是正常的,可以通过.spec文件重新发布。
常规打包示例代码:pyinstaller -F name.py
建议代码A:pyinstaller --hidden-import=pkg_resources name.py
建议代码B:pyinstaller --additional-hooks-dir=hooks name.py
注:name为python文件名称,小型代码 常规打包就好 如果是带有tensorflow 或者是 sklearn的建议A或者是B ,若采用A方案打包出错,可以参考以下解决思路。
采用打包代码B需要在代码文件夹中建立hooks文件夹。新建hook-sklearn.py文件(名称不固定),复制以下代码
代码如下:

from PyInstaller.utils.hooks import collect_all


def hook(hook_api):
    packages = [
        'sklearn',

    ]
    for package in packages:
        datas, binaries, hiddenimports = collect_all(package)
        hook_api.add_datas(datas)
        hook_api.add_binaries(binaries)
        hook_api.add_imports(*hiddenimports)

2.打包之后查看文件

打包之后会在,代码文件夹中产生一个dist文件夹,打开dist文件夹,我的程序命名为dame.py,继续打开dame文件夹,可能文件有点多,问题不大,在dame文件夹打开终端,输入./dame
Ubuntu18.04打包可执行python文件详细总结_第1张图片
这里出了一个No module 的错误,问题不大 加在dame.spec文件hiddenimport中,如下图所示:这个文件通常与dist文件夹同级目录
Ubuntu18.04打包可执行python文件详细总结_第2张图片
之后在pycharm中选中你的代码文件,鼠标右键,open in Termainal
Ubuntu18.04打包可执行python文件详细总结_第3张图片
输入指令:pyinstaller dame.spec
重新打包成功:
Ubuntu18.04打包可执行python文件详细总结_第4张图片
继续打开dist文件夹进行测试,在dame文件夹打开终端,输入./dame

Ubuntu18.04打包可执行python文件详细总结_第5张图片
如果你采用了matplotlib模块进行绘图操作,这个错误就是说你生成的打包文件缺失matplotlibrc,这个问题其实很好解决,我们把自己创建的环境里面的这个文件拷贝一份到这个路径就可以解决问题,
我的环境路径可供参考(当然也可以直接搜索):
/home/miniconda3/envs/py38/lib/python3.8/site-packages/matplotlib/mpl-data
打开这个文件夹后发现.有字体图片等一些文件夹,如果觉得麻烦直接复制,粘贴到你生成的dist文件中,那个mpl-data文件中,
Ubuntu18.04打包可执行python文件详细总结_第6张图片
之后采用之前方案运行程序测试,这次没有报错并成功生成了图片与运行结果。
Ubuntu18.04打包可执行python文件详细总结_第7张图片

代码如下(示例):

3.一些其他问题:

如果你代码里有这两条语句:

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

中文字体显示错误等问题:
参考博客:https://blog.csdn.net/mr_muli/article/details/89485619
(解决ubantu里面报错findfont: Font family [‘sans-serif’] not found. Falling back to Bitstream Vera Sans)
字体下载地址:https://cooltext.com/Download-Font-%E9%BB%91%E4%BD%93+Sim+Hei

该处使用的url网络请求的数据。


总结

提示:其他总结:
这个方法仅仅针对linux内核操作环境要求下的项目打包问题便于移植,当然Ubuntu环境可以直接运行.py文件,之前尝试过环境移植,相对而言受限较大。另:打包好的环境,要放在正确的目录下,例如:/home等,否则会没有权限,需要重新赋予权限。

你可能感兴趣的:(技术总结,python,ubuntu,linux)