精华内容
下载资源
问答
  • Qt程序打包发布方法(使用官方提供的windeployqt工具) Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行...

    Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。
    以官方 Qt 5.4.0+MinGW 开发环境为例,windeployqt工具在 %QTDIR%\Qt5.4.0\5.4\mingw491_32\bin 目录下,其中 QTDIR 是 Qt 的安装目录,是环境变量。

    在集成开发环境 QtCreator 中可选择 “Qt Widgets Application” 或 “Qt Quick Application” 两种方式生成图形界面应用程序。

    下面分别介绍这两种方式创建应用的发布方式。

    1. Qt Widgets Application
    首先用 QtCreator 新建一个 Qt Widgets Application 项目,直接用默认的 QMainWindow 程序就可以了,项目名字假定是 hellomw。
    然后以 Release 方式编译生成 exe 程序:
    这里写图片描述

    生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:C:\QtPros\hellomw\ 。
    它的项目生成目录是 C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\ 。
    进入这个文件夹,在进入它的子文件夹 release 里面,找到 hellomw.exe,将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 D:\hellomw\ 文件夹里面。

    然后从开始菜单打开 Qt 命令行,输入命令:cd /d D:\hellomw
    然后使用 Qt安装目录(如D:\Qt\5.15.0\msvc2019\bin)的windeployqt 工具命令:D:\Qt\5.15.0\msvc2019\bin\windeployqt hellomw.exe

    这里写图片描述

    然后可以在 D:\hellomw 文件夹里看到 windeployqt 工具自动复制的插件文件夹和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。
    把 D:\hellomw 文件夹 打包就可以发布了,不用自己一个个找 dll 文件了。D:\hellomw 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,其他的都保留。

    1. Qt Quick Application

    首先用 QtCreator 新建一个 Qt Quick Application 项目,直接用默认的项目模版,点击下一步生成项目,项目名字假定是 helloqml。
    然后以 Release 方式编译生成 exe 程序:

    这里写图片描述

    然后找到项目的构建目录,比如项目源码目录 C:\QtPros\helloqml 。
    它的构建目录是:C:\QtPros\build-helloqml-Desktop_Qt_5_4_0_MinGW_32bit-Release\ 。
    进入这个目录,再进入 release 子文件夹,找到 helloqml.exe ,复制到一个新的单独的文件夹里面,比如 D:\helloqml\ 文件夹里面。

    然后从开始菜单打开 Qt 命令行,进入D:\helloqml\文件夹:cd /d D:\helloqml
    然后使用 windeployqt 工具命令:windeployqt helloqml.exe --qmldir C:\Qt\Qt5.4.0\5.4\mingw491_32\qml
    这里写图片描述
    注意不要跟完全一样照抄上条命令!–qmldir 是指出 Qt 库里面的 qml 文件夹位置,上面命令里 C:\Qt\Qt5.4.0 是 Qt 官方开发环境安装的文件夹,C:\Qt\Qt5.4.0\5.4\mingw491_32 是Qt类库的目录(QTDIR),因此使用的 --qmldir 后面写的是 C:\Qt\Qt5.4.0\5.4\mingw491_32\qml ,读者Qt环境安装路径不一样,要根据实际情况修改!

    然后可以看到 D:\helloqml 文件夹里有一大堆文件,就是 QtQuick程序需要的依赖文件。将整个 D:\helloqml 文件夹 打包就可以发布出去,在别的电脑上使用。
    这个 D:\helloqml 文件夹里的东西很多,看不懂就不要删,老老实实打包发布就行了。

    上面是最简单的程序发布,实际复杂程序可能还带一些图片文件、数据库文件、配置文件之类的,可以按自己需要添加这些文件到发布文件夹里面。

    展开全文
  • Python项目打包发布方法

    万次阅读 多人点赞 2018-12-29 11:56:07
    目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用。 在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是把程序所引用的库文件也一起打包在一起。...

     

          目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用。

          在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是把程序所引用的库文件也一起打包在一起。

          如下以windows系统为例,分2个步骤,演示如何使用pyinstaller打包。

          第1步:安装pyinstaller

          安装pyinstaller之前首先必须有pip,如果还没有安装,请用度娘搜索“python安装pip”,资源丰富,在此不再介绍,使用pip安装pyinstaller的命令如下:

    pip install pyinstaller

          命令执行的截图如下,直至安装完毕,我仅截取了前面部分打印信息。

          第2步:打包exe文件

          如果是打包一个py文件,可以使用“pyinstaller -F 待打包文件名”进行打包,在命令执行完毕后,会在dist目录下生成一个“待打包文件名.exe”的文件。如果不使用“-F”参数,则会在dist目录下生成一个“待打包文件名”的文件夹,该文件夹下包含“待打包文件.exe”,但是要整个文件夹在一起才能正常工作,因为这个文件夹的功能相当于使用“-F”时的一个“待打包文件.exe”。

          使用加F参数打包成一个exe文件的操作截图如下:

           使用“F”强制打包参数,有时会导致软件功能运行不正常,仅限于小的范例使用,如果项目有多个py文件,则建议别再使用“F”参数。

          如果项目有多个文件,打包时可以把多个文件列出来,中间用空格隔开即可。

          如果需要修改默认图标为指定图标,则使用“-i  图标文件名”来实现。

          如下为使用多个py文件和图标的打包截图。

          pyinstaller的参数见下表,大家可以在需要时参考。

    参数 参数全称 参数说明

    -F

    –onefile

    打包成单个可执行文件,如果你的代码都写在一个.py文件,则可以使用,如果是多个.py文件,建议不要使用。

    -D

    –onedir

    打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,该方式代码较易于维护。

    -K –tk 在部署时包含 TCL/TK。
    -a –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码。
    -d –debug

    产生debug版本的可执行文件

    -w –windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(仅对Windows有效)
    -c –nowindowed,–console

    使用控制台子系统执行(默认)(只对Windows有效)

    pyinstaller -c  xxxx.py

    pyinstaller xxxx.py --console

    -s –strip

    可执行文件和共享库将run through strip。

    注意Cygwin的strip可能使普通的win32 Dll无法使用

    -X –upx 如果有UPX安装(执行Configure.py时检测),则会压缩执行文件(Windows系统中的DLL也会)
    -o DIR –out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下。
    -p DIR –path=DIR

    设置导入路径(和使用PYTHONPATH效果相似)。

    可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源

    -i <FILE.ICO> –icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标  pyinstaller -i  ico路径 xxxxx.py
    –i <FILE.EXE, N> –icon=<FILE.EXE, N>

    将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)

    -v FILE –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
    -n NAME –name=NAME

    可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    如果你喜欢这篇文章,别忘了点赞和评论哦!

    展开全文
  • Pyinstaller 打包发布经验总结

    万次阅读 多人点赞 2018-09-02 18:46:30
    使用Pyinstaller打包Python项目包含了大量的坑,这篇文章总结实践得到的Pyinstaller打包经验。本文的例子为Python3.6代码,Pyinstaller3.4,在windows下打包为64位和32位版本。 目录 Pyinstaller基本使用方法 ...

    使用Pyinstaller打包Python项目包含了大量的坑,这篇文章总结实践得到的Pyinstaller打包经验。本文的例子为Python3.6代码,Pyinstaller3.4,在windows下打包为64位和32位版本。

    目录

    Pyinstaller基本使用方法

    Python项目的打包方法

    1.spec文件生成

    2.spec文件配置

    3.使用spec执行打包命令

    Visual C++ run-time .dlls包含

    Python模块的打包问题

    冻结打包路径

    其它问题


    Pyinstaller基本使用方法

    Python项目的打包方法

    1.spec文件生成

    2.spec文件配置

    3.使用spec执行打包命令

    Python模块的打包问题

    冻结打包路径

    其它问题


    Pyinstaller基本使用方法

    Pyinstaller可以通过简单的命令进行python代码的打包工作,其基本的命令为:

    pyinstaller -option xxx.py

    options的详情可参考官方帮助文档https://pyinstaller.readthedocs.io/en/stable/usage.html

    这边只介绍用到的option:-d生成一个文件目录包含可执行文件和相关动态链接库和资源文件等;-f仅生成一个可执行文件

    -D, --onedir Create a one-folder bundle containing an executable (default)
    -F, --onefile Create a one-file bundled executable.

    对于打包结果较大的项目,选用-d生成目录相比单可执行文件的打包方式,执行速度更快,但包含更加多的文件。本文的例子选中-D方式打包。

    Python项目的打包方法

    以一个多文件和目录的Python项目为例,项目文件包含:1.Python源代码文件;2.图标资源文件;3.其它资源文件

    以图中项目为例,Python源代码文件在多个目录下:bin, lib\app, lib\models, lib\views;图标资源文件在lib\icon目录下;其它资源文件在data目录下,包括文本文件,视频文件等等。

    1.spec文件生成

    为了进行自定义配置的打包,首先需要编写打包的配置文件.spec文件。当使用pyinstaller -d xxx.py时候会生成默认的xxx.spec文件进行默认的打包配置。通过配置spec脚本,并执行pyinstaller -d xxx.spec完成自定义的打包。

    通过生成spec文件的命令,针对代码的主程序文件生成打包对应的spec文件

     pyi-makespec -w xxx.py

    打开生成的spec文件,修改其默认脚本,完成自定义打包需要的配置。spec文件是一个python脚本,其默认的结构如下例所示

    # -*- mode: python -*-
    
    block_cipher = None
    
    
    a = Analysis(['fastplot.py'],
                 pathex=['D:\\install_test\\DAGUI-0.1\\bin'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              exclude_binaries=True,
              name='fastplot',
              debug=False,
              strip=False,
              upx=True,
              console=False )
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   name='fastplot')

    spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

    • Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息

    • PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖

    • EXE根据上面两项生成

    • COLLECT生成其他部分的输出文件夹,COLLECT也可以没有

    2.spec文件配置

    首先给出举例python项目的spec文件配置

    # -*- mode: python -*-
    import sys
    import os.path as osp
    sys.setrecursionlimit(5000)
    
    block_cipher = None
    
    
    SETUP_DIR = 'D:\\install_test\\FASTPLOT\\'
    
    a = Analysis(['fastplot.py',
                  'frozen_dir.py',
                  'D:\\install_test\\FASTPLOT\\lib\\app\\start.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\analysis_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\datafile_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\data_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\figure_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\time_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\models\\mathematics_model.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\constant.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\custom_dialog.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\data_dict_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\data_process_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\data_sift_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\mathematics_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\para_temp_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\mainwindow.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\paralist_window.py',
                 'D:\\install_test\\FASTPLOT\\lib\\views\\plot_window.py'],
                 pathex=['D:\\install_test\\FASTPLOT'],
                 binaries=[],
                 datas=[(SETUP_DIR+'lib\\icon','lib\\icon'),(SETUP_DIR+'data','data')],
                 hiddenimports=['pandas','pandas._libs','pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.timedeltas',
                 'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist','scipy._lib','scipy._lib.messagestream'],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)
                                         
                
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              exclude_binaries=True,
              name='fastplot',
              debug=False,
              strip=False,
              upx=True,
              console=True)
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   name='fastplot')
    

    a) py文件打包配置

    针对多目录多文件的python项目,打包时候需要将所有相关的py文件输入到Analysis类里。Analysis类中的pathex定义了打包的主目录,对于在此目录下的py文件可以只写文件名不写路径。如上的spec脚本,将所有项目中的py文件路径以列表形式写入Analysis,这里为了说明混合使用了绝对路径和相对路径。

    b) 资源文件打包配置

    资源文件包括打包的python项目使用的相关文件,如图标文件,文本文件等。对于此类资源文件的打包需要设置Analysis的datas,如例子所示datas接收元组:datas=[(SETUP_DIR+'lib\\icon','lib\\icon'),(SETUP_DIR+'data','data')]。元组的组成为(原项目中资源文件路径,打包后路径),例子中的(SETUP_DIR+'lib\\icon','lib\\icon')表示从D:\\install_test\\FASTPLOT\\lib\\icon下的图标文件打包后放入打包结果路径下的lib\\icon目录。

    c)Hidden import配置

    pyinstaller在进行打包时,会解析打包的python文件,自动寻找py源文件的依赖模块。但是pyinstaller解析模块时可能会遗漏某些模块(not visible to the analysis phase),造成打包后执行程序时出现类似No Module named xxx。这时我们就需要在Analysis下hiddenimports中加入遗漏的模块,如例子中所示。

    d)递归深度设置

    在打包导入某些模块时,常会出现"RecursionError: maximum recursion depth exceeded"的错误,这可能是打包时出现了大量的递归超出了python预设的递归深度。因此需要在spec文件上添加递归深度的设置,设置一个足够大的值来保证打包的进行,即

    import sys
    sys.setrecursionlimit(5000)
    

    e)去除不必要的模块import

    有时需要让pyinstaller不打包某些用不到的模块,可通过在excludes=[]中添加此模块实现,如

    excludes=['zmq']

    3.使用spec执行打包命令

    pyinstaller -D xxx.spec

    打包生成两个文件目录build和dist,build为临时文件目录完成打包后可以删除;dist中存放打包的结果,可执行文件和其它程序运行的关联文件都在这个目录下。

    Visual C++ run-time .dlls包含

    针对在Windows<10发布使用,且Python>=3.5的情况,Pyinstaller打包的程序可能会出现不包含Visual C++ run-time .dlls的情况,Python>=3.5需要使用Visual Studio 2015 run-time,也就是Universal CRT,这些runtime在Win10本身或Win7到Win8.1版本的更新包里,但程序打包后使用的系统里并不一定安装了。因此需要参考Universal CRT的建议,应用以下的方法解决这个问题:

    1. Build on Windows 7 which has been reported to work.

    2. Include one of the VCRedist packages (the redistributable package files) into your application’s installer. This is Microsoft’s recommended way, see “Distributing Software that uses the Universal CRT“ in the above-mentioned link, numbers 2 and 3.

    3. Install the Windows Software Development Kit (SDK) for Windows 10 and expand the .spec-file to include the required DLLs, see “Distributing Software that uses the Universal CRT“ in the above-mentioned link, number 6.

     

    Python模块的打包问题

    程序调用的很多包,在打包时候可能会出现一些问题,针对这写问题需要做一些处理才能保证打包的程序正常执行。

    1.PyQt plugins缺失

    使用PyQt编写UI交互界面的python代码在进行打包时可能会出现一些特别的问题。

    执行使用了PyQt的打包程序,常会出现这样的错误,提示缺少Qt platfrom plugin “windows”,如下图

    打包后程序运行后,使用png格式的图标可以正常显示,但使用的ico格式图标不显示(对于所有图标和关联文件都无法使用的情况涉及到路径问题,后文会另外解释)。

    这两个错误产生的问题都是因为打包时没有将PyQt相关的动态链接库目录生成到打包目录下,因此可以通过将这些需要的文件目录拷贝到打包生成目录下,解决plugin缺失问题。以使用PyQt5编写的python软件打包为例,完成打包后的结果目录下包含PyQt5文件夹,将PyQt5\Qt\plugins下的所有内容(如下图)拷贝到打包结果目录。这样就可以解决PyQt plugins缺失的问题。

    2.动态链接库缺失问题

    更一般的,打包后可能会缺失某些动态链接库,造成执行程序出错,如

    ImportError: DLL load failed: 找不到指定的模块

    在打包过程中一般会有与此相关的warning提示(lib not found)无法找到这些动态链接库。例如在32位版本的打包中,可能会出现scipy模块相关的dll文件无法找到。这时就需要在打包的spec文件中指定动态链接库路径,使其关联到打包后的路径中。

    binaries=[('C:\\Program Files\\Python36-32\\Lib\\site-packages\\scipy\\extra-dll','.')]

    Analysis下的binaries是为打包文件添加二进制文件,缺失的动态链接库可以通过这种方式自动加入到打包路径中。

    3.窗体风格变化问题

    在某些情况下,如在精简环境下的python程序打包中,执行打包后的程序会出现窗体风格变为老式的win风格,这是由于打包时候PyQt的styles动态库没有找到。因此只需要在Python 目录下找到 Lib\site-packages\PyQt5\Qt\plugins\styles,将styles整个目录复制到打包结果目录。

    4.UnicodeDecodeError

    当打包时出现类似错误时:

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 122

    可在打包的命令行中输入chcp 65001设置命令行显示utf-8字符,然后再执行打包命令。或者,修改pyinstaller包下的compat.py,根据报错对应的行将

    out = out.decode(encoding)

    改为

    out = out.decode(encoding, 'replace')

    冻结打包路径

    执行打包后的程序,经常会出现程序使用的图标无法显示,程序使用的关联文件无法关联。或者,在打包的本机上运行正常,但是将打包后的程序放到其它机器上就有问题。这些现象都很有可能是由程序使用的文件路径发生改变产生的,因此在打包时候我们需要根据执行路径进行路径“冻结”。

    1.使用绝对路径

    在python代码中使用绝对路径调用外部文件可以保证打包时候路径可追溯,因此在本机上运行打包后程序基本没问题。但是当本机上对应路径的资源文件被改变,或者将打包程序应用到别的机器,都会出现搜索不到资源文件的问题。这种方式不是合适的打包发布python软件的方式。

    2.使用冻结路径

    增加一个py文件,例如叫frozen_dir.py

    # -*- coding: utf-8 -*-
    """
    Created on Sat Aug 25 22:41:09 2018
    frozen dir
    @author: yanhua
    """
    import sys
    import os
    
    def app_path():
        """Returns the base application path."""
        if hasattr(sys, 'frozen'):
            # Handles PyInstaller
            return os.path.dirname(sys.executable)
        return os.path.dirname(__file__)

    其中的app_path()函数返回一个程序的执行路径,为了方便我们将此文件放在项目文件的根目录,通过这种方式建立了相对路径的关系。

    源代码中使用路径时,以app_path()的返回值作为基准路径,其它路径都是其相对路径。以本文中使用的python项目打包为例,如下所示

    import frozen_dir
    SETUP_DIR = frozen_dir.app_path()
    
    FONT_MSYH = matplotlib.font_manager.FontProperties(
                    fname = SETUP_DIR + r'\data\fonts\msyh.ttf',
                    size = 8)
    
    DIR_HELP_DOC = SETUP_DIR + r'\data\docs'
    DIR_HELP_VIDEO = SETUP_DIR + r'\data\videos'

    通过冻结路径,使用了基准目录下的data目录下的fonts, docs, videos。

    主程序中也做了类似的调整,改变其设置路径方法

    import frozen_dir
    
    SETUP_DIR = frozen_dir.app_path()+r'\lib'
    sys.path.append(SETUP_DIR)

    使用这样的方法进行打包,打包后的可执行程序就可以在其它机器上运行。

    其它问题

    由于操作系统和运行环境的不同,pyinstaller打包中还可能遇到很多其它问题,最后总结一些我在打包中遇到的其它坑:

    1.权限问题

    通常时在打包时出现的某些文件拒绝访问或没有权限执行某些操作等。解决这个的方法一般有这几个方面:

    a)使用管理员权限运行cmd或其它命令行窗口

    b)关闭杀毒软件

    c)使用完全权限的管理员账户

    2.中文路径

    pyinstaller打包后的路径使用中文没有问题,不过为了减少打包时候出错的可能,尽量将打包使用的资源文件和代码文件路径设置为英文。

    3.打包后文件的大小

    通常python打包为可执行文件都会得到一个较大的包,这是无法避免的,但是我们还是可以通过一些方法来尽量精简打包后的执行程序:

    a)在代码中减少不必要的import,如from xxx import *

    b)在精简的运行环境(如原生python环境)下打包,缺什么包就下什么包,避免不必要的python包被打包入程序。尤其是anaconda这样的集成环境下打包的结果会大很多。

    c)使用UPX

     

     

    展开全文
  • Vue 打包发布流程

    万次阅读 2019-05-16 16:21:38
    Vue 打包发布流程 配置打包文件路径 在vue.config.js中设置 module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/ynnt/' : '/' } 这里的ynnt就是我们基地址的路径。 执行打包命令 ...

    Vue 打包发布流程

    配置打包文件路径

    在vue.config.js中设置

    module.exports = {
      publicPath: process.env.NODE_ENV === 'production'
        ? '/ynnt/'
        : '/'
    }

    这里的ynnt就是我们基地址的路径。

    执行打包命令

    通过命令npm run build执行打包,最终在根目录下会生成dist文件夹,该文件就是我们打包后的文件。

    将打包文件放到服务器上

    将文件放入服务器中的tomcat中,放出连接地址就ok了。

    http://服务器域名:端口号/ynnt/

     

    展开全文
  • Linux下打包发布Qt应用程序

    万次阅读 多人点赞 2018-10-27 12:46:42
    Linux下打包发布Qt应用程序Linux下打包发布Qt应用程序1. 编译文件2.巧用脚本文件新建文件添加脚本执行脚本打包发布 Linux下打包发布Qt应用程序 Linux下使用Qt进行开发的程序,如果想要在其他搭载Linux系统的主机上...
  • C#程序打包发布

    千次阅读 2019-10-20 18:57:38
    本文是我对C#程序简单的打包发布的学习记录,如有错误还望见谅。 一、C#程序发布 1、点击“生成”——“发布××”,如下所示: 2、程序发布的简单配置,如下图所示: 点击完成,即可生成发布文件,如下图所示: ...
  • 最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了。 首先,先介绍自己使用的环境。我使用的QT版本是。我的电脑...
  • Electron打包发布

    千次阅读 2017-08-13 12:14:24
    刚开始接触Electron框架,只想讲一个简单的web程序打包成桌面端,写个笔记。 1、装好Node.js Node Downloads 2、安装专门的打包工具:...3、核心步骤参考electron打包发布  转:http://www.cnblogs.com/chenji
  • Flutter 项目打包发布

    千次阅读 2019-07-03 19:37:25
    Flutter 项目打包发布 Android流程 替换应用Icon和应用名称 在/android/app/src/main/res 目录下,替换ic_launcher.png为正式的项目图标。 在/android/app/src/main/AndroidManifest.xml文件中,修改Application标签...
  • 用gulp打包发布项目

    万次阅读 2017-03-08 17:50:06
    3.增加版本号首先,手动打包发布的网站比如:https://javascript-minifier.com 显然,手动打包麻烦费时费力的,那自从node.js出来以后,方便快捷,自动化处理。打包的主流3个工具: 1.Grunt 自动化构建工具 2....
  • vue 打包发布

    万次阅读 2019-06-14 12:02:53
    1. 打包之前需要先修改config下的index.js文件中build,assetsPublicPath:'./' build: { //index.html路径 index: path.resolve(__dirname, '../dist/project/index.html'), //静态文件的路径 ...
  • MFC程序打包发布

    千次阅读 2017-04-04 18:52:37
    MFC程序打包发布 调试完成一个版本的程序后,为了不让用户轻易看到自己的源代码,也算是保护知识产权的一种方式吧;或者想要拿到别的平台去跑,不想Copy工程编译生成,况且别的平台不一定有支持所有插件的环境。...
  • 打包发布自己的nodejs包

    千次阅读 2018-11-09 08:46:13
    打包发布自己的nodejs包
  • QT APP 打包发布流程

    千次阅读 2019-03-03 21:59:22
    QT APP 打包发布流程 今天说说QT Qt Widgets Application 可执行程序发布方式,就是我们创建的 Qt Widgets Application 项目,开发完成后如何发布软件,下面来看看软件发布步骤: 1、以 Release 方式编译生成 exe ...
  • 打包发布带有QWebEngine模块的软件时,需要在软件目录中添加以下文件,才能让软件在其他没有Qt环境的机器上面运行,不然程序会崩溃 目录是:.\Qt\5.10.1\msvc2017_64\resources\ icudtl.dat qtwebengine_...
  • (1)原因是工程内部应该调用Plugins文件夹中的dll,但是没有调取,工程内部运行时调用了工程同目录下的...(2)打包发布出的exe应该运行工程同目录下的dll文件,却没有调用。 有没有大佬知道怎么回事啊? 在线等挺急的谢谢
  • 签名打包发布Release版本的apk安装包

    千次阅读 2019-11-16 14:49:05
    签名打包发布Release版本的apk安装包 请参考以下两篇文章: ReactNative之Android打包APK方法(趟坑过程) React Native发布APP之签名打包APK 如何发布一个apk 先保证自己正确配置了所有的 RN 环境 在 cmd ...
  • Flutter开发之iOS应用打包发布(23)

    千次阅读 2019-07-08 11:01:16
    安卓开发者如何使用Flutter打包IOS应用 https://www.jianshu.com/p/a052cbfd12fa 对于iOS 开发者就比较简单了,很 iOS 原生应用打包发布一样的
  • 一.qt程序用 linuxdeployqt打包发布步骤:  1.新建一文件夹,将qt编译生成的release下的xxx(可执行文件)拷到该文件夹下。  2.进入此文件夹,打开命令行模式,进入root权限。运行命令linuxdeployqt xxx -appimage ...
  • flutter ios开发打包发布全流程

    千次阅读 2020-10-17 19:17:08
    下面开始介绍ios开发打包发布的流程和中间需要注意的点。 第一部分:开发测试 第二部分:打包发布 1、申请钥匙串 2、申请证书 3、注册Bundle ID 4、添加测试设备 5、配置证书 6、打包ipa 7、发布 1、申请钥匙串 打开...
  • QT5的程序打包发布(打包成exe可执行程序)

    万次阅读 多人点赞 2018-12-11 11:30:20
    QT打包的两种方式: 一个是QT5自带的windeployqt(不需要下载安装),它可以找到程序(exe)用到的所有库文件,并且都拷贝到exe程序的当前文件。此时打包的exe较小,需要和拷贝进来的文件放一起运行,也可以将这些...
  • Autojs pro如何打包发布apk教程

    千次阅读 2021-02-17 18:24:21
    攒外快网脚本学员群有群友问站长:Autojs pro如何打包发布apk?今天这篇教程就分享一下Autojs pro7破解版打包软件,以及打包教程。今天分享的这款Autojs pro7 目的是用于打包,一般调试的话用Autojs pro8。这两款...
  • iOS企业账户发布流程--打包发布

    千次阅读 2016-07-02 14:21:00
    上架(发布到AppStore)二:打包发布(打包成一个ipa的文件放到服务器,可以通过链接下载 Safari浏览器) 本文主要介绍企业账户打包发布 企业级开发账号的申请 这里推荐一篇比较详细的博客:企业级开发账号的申请...
  • 安装pyinstaller打包发布所需环境

    千次阅读 2020-05-01 21:01:42
    pyinstaller 打包发布 PyQt5项目 环境 打包发布所需环境 1.安装pip(百度搜索) 2.安装pyinstaller pip install pyinstaller   测试是否安装成功,如果显示一堆列表,最后还有一行“pyinstaller: error: the ...
  • vs 2017 项目程序打包发布

    千次阅读 2020-02-18 19:35:51
    VS 2017 项目程序打包发布成不依赖本地代码和资源的安装包 参考:https://blog.csdn.net/qq_35128576/article/details/80325838 安装VS 2017打包插件Visual Studio 2017 Installer Projects,默认新安装是不带这个...
  • Winform打包发布图解

    千次阅读 2013-02-06 15:29:08
    最近,机房收费系统的个人版接近尾声,到了打包发布的时刻。VB.NET的打包发布与VB6.0的打包发布存在不小的差别。下面我们来详细看一下如果打包发布。 第一步:  打开VS,新建项目,选择其他项目类型--安装部署 ...
  • VS2015+QT5.7.1 程序打包发布

    千次阅读 2019-01-09 19:15:39
    写好了程序想打包发布在别人的电脑上也可以运行。折腾了好久终于实现,记录下来以免后面忘记。 网上的打包发布教程一般都是使用qt自带的命令提示 windeployqt 打包,具体方式是 1.将要打包的exe 放在一个单独的...
  • eclipse 插件打包发布

    千次阅读 2015-09-02 16:40:39
    如果想把调试好的插件打包发布,并且在ECLIPSE中可以使用. 1.File-->Export 2.选择 PLug-in Development下 的 Deployable plug-ins and fragments 3.进入 Deployable plug-ins and fragments 页面 4.把...
  • python程序打包发布方法整理

    万次阅读 2018-07-19 13:42:17
    相关配置: Anaconda 4.2.0 (64-bit) Python 3.5.2 写在前面的话,在开始打包之前,要创建一个新的文件夹,这个文件夹是你放.exe的地方,然后,把...如果只是单一的python程序,打包发布***.exe的步骤如下: 1.p...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 251,402
精华内容 100,560
关键字:

打包发布