程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

windows中python打包後運行閃退:引用的其他軟件包如xlrd、xlwt沒有一起打包的問題

編輯:Python

        最近有個事情需要處理數據生成幾十個excel表格,一開始想著用c++來寫代碼做處理,後來發現c++對excel表格的使用並不是很友好,所以就臨時學習一下python,通過網上的例子和代碼邊做邊學。

        最後在自己的編譯器pycharm裡成功運行解決問題後,別人也要用,但是別人電腦沒python環境,想著就打包一下子,就出現問題了,打包的時候在windows上總是打包成功(打包的時候並不會檢查是否有問題),但是運行出問題,原因就是使用到處理excel的xlrd和xlwt沒一起打包進行。

        因為代碼一開始是在mac電腦上寫的,然後復制到windows電腦裡進行打包的,打包用的是pyinstaller,這個大家可以自己去搜一下怎麼下載使用,我也是在cmd裡進行下載了,也在pycharm裡的軟件包當中進行下載了,這樣在pycharm裡的終端和cmd當中都可以打包。

然後打包大家都知道的,就不復述了,關鍵是有個問題,大家在新建項目的時候環境設置是否有問題,我是設置Virtualenv的環境到項目裡,所以目錄裡才有venv,我下載的包xlrd和xlwt也是在項目裡。如圖:

解釋器也不一樣,上面那個是設置到項目裡,下面那個是設置到python裡,如圖:

 

所以就導致可能我的python那裡沒有這個包!!

那麼去哪裡找我們的python去哪裡看python環境裡是否有我們下載的包咧

        在win+R打開cmd,然後輸入where python會有地址(如我的是:C:\Users\xx\AppData\Local\Programs\Python\Python310\),然後找到這個目錄下面的C:\Users\xx\AppData\Local\Programs\Python\Python310\Lib\site-packages,去這個文件夾裡看看你是否有你需要引入的包,我推薦是在項目設置的時候環境就不要去改,我就是因為改了導致這個site-packages裡沒有我需要引入的包。

        解決辦法就是你把項目裡,如上圖當中的那個site-packages的文件夾替換到python裡的那個文件夾,當然你也可以只復制文件夾裡的部分內容(一定要復制全),再次打包就可以解決這個問題。

        後面打包成功的時候我的test.spec文件裡沒有更改任何東西,所以應該不關這個文件的問題,但是後面我需要用到外部的數據源excel文件,我還是在這個文件裡進行了更改,可以把外部數據源文件一起打包進去,如下圖:

         這時候打包一定要注意了,要使用pyinstaller xxx.spec ,如我圖片裡的(這裡的"."代表的是該文件夾下,你也可設置其他路徑),這時候你去dist裡面就可以看到把這個文件一起打包進去了,至於這個怎麼來的,你先打包一次用pyinstaller xxx.py打包一次就有了。

        正常使用中我們是不需要管spec文件的,但是下面幾種情況需要修改spec文件:

  • 需要打包資源文件;
  • 需要include一些PyInstaller不知道的庫;
  • 為可執行文件添加run-time 選項;
  • 多程序打包。

        後面將這個小程序在mac上進行打包的時候,又發現了其他的問題,就是打包後一直說找不到我xls文件,但是一樣的代碼在windows裡卻是可以正常跑的,這個在我的另一個文章裡會寫。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved