日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python打包py文件生成exe,以及運行exe產生的問題

系統 2166 0

python打包py文件生成exe,以及運行exe產生的問題

1 安裝pyinstaller

pip install pyinstaller

我這里已經安裝過了,就不再多說啦!
python打包py文件生成exe,以及運行exe產生的問題_第1張圖片

2 用pyinstaller進行打包

(1)選項:
-F:表示生成單一的exe文件

-w:表示執行exe文件時去除背后的dos窗口 ps:建議最初試驗時保留dos,可以查看是否有錯誤發生

-p:有些需要手動添加包的位置(dir1,dir2)多個地址時以分號分開

-i:加入圖標

(2)打包一個py文件 添加圖標(格式為ico的圖片):
pyinstaller -F XXX.py -i XX.ico
(3)打包多個py文件:
pyinstaller -F XXX.py -p XX.py -i XX.ico(以此類推)

運行以后,會生成dist和build兩個文件夾,exe在dist文件夾下。如果程序需要用到附加的文件則添加到dist文件夾中即可。

3 運行打包后的 多進程exe程序出現的問題

運行之后 我發現計算機不怎么響應了,而且很卡,打開任務管理器:

python打包py文件生成exe,以及運行exe產生的問題_第2張圖片
一會電腦就馬上掛掉啦!這并不是我們想要的結果

接著在網上一番百度,終于找到解決問題的辦法:
pyinstaller版本小于3.3的windows附加代碼(不過我的版本是3.4的不知道為什么還會出現這個問題,反正添加上后程序運行就正常啦)

新建一個wenke.py文件 添加如下代碼:

            
              import os
import sys
import multiprocessing

# Module multiprocessing is organized differently in Python 3.4+
try:
    # Python 3.4+
    if sys.platform.startswith('win'):
        import multiprocessing.popen_spawn_win32 as forking
    else:
        import multiprocessing.popen_fork as forking
except ImportError:
    import multiprocessing.forking as forking

if sys.platform.startswith('win'):
    # First define a modified version of Popen.
    class _Popen(forking.Popen):
        def __init__(self, *args, **kw):
            if hasattr(sys, 'frozen'):
                # We have to set original _MEIPASS2 value from sys._MEIPASS
                # to get --onefile mode working.
                os.putenv('_MEIPASS2', sys._MEIPASS)
            try:
                super(_Popen, self).__init__(*args, **kw)
            finally:
                if hasattr(sys, 'frozen'):
                    # On some platforms (e.g. AIX) 'os.unsetenv()' is not
                    # available. In those cases we cannot delete the variable
                    # but only set it to the empty string. The bootloader
                    # can handle this case.
                    if hasattr(os, 'unsetenv'):
                        os.unsetenv('_MEIPASS2')
                    else:
                        os.putenv('_MEIPASS2', '')


    # Second override 'Popen' class with our modified version.
    forking.Popen = _Popen


            
          

然后在mul_process.py中加入:

            
              import wenke

            
          

然后在 if __name__ == '__main__': 下面加入:

            
              multiprocessing.freeze_support()

            
          

添加完后,再次進行打包,運行程序 ok! 大功告成


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 喀喇| 务川| 南溪县| 长汀县| 北流市| 丁青县| 博湖县| 涞源县| 灵丘县| 彰化县| 铜梁县| 错那县| 佳木斯市| 绥中县| 敦煌市| 沅陵县| 抚宁县| 湘乡市| 江城| 桃源县| 个旧市| 海兴县| 寿宁县| 鄂州市| 贞丰县| 裕民县| 武义县| 新蔡县| 新泰市| 龙里县| 贞丰县| 宜章县| 烟台市| 新蔡县| 宁津县| 焦作市| 赞皇县| 红桥区| 韩城市| 临高县| 鄂托克旗|