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

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

系統 2143 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條評論
主站蜘蛛池模板: 开平市| 剑阁县| 抚松县| 化州市| 堆龙德庆县| 班戈县| 如皋市| 友谊县| 新闻| 三台县| 普定县| 兰溪市| 化隆| 吉安县| 宜兰市| 金寨县| 紫阳县| 黄骅市| 江永县| 成安县| 枞阳县| 万盛区| 清涧县| 土默特左旗| 马龙县| 中卫市| 建平县| 云和县| 安龙县| 新郑市| 易门县| 名山县| 改则县| 双流县| 胶州市| 安岳县| 贵南县| 阿城市| 长子县| 霍山县| 大埔区|