win10: pyinstaller在python2和python3環境下的適應性配置


win10:pyinstaller在python2和python3環境下的適應性配置

前言

pyinstaller是一個非常優秀的python可執行程序打包工具,在windows下打包成.exe文件,在linux打包成linux下可執行文件。
最近,需要在python2和python3環境下分別使用pyinstaller進行打包,在網上搜集整理了很多資料,現在匯總如下。

相關配置

1.python安裝不同版本

(1).在自定義位置,如c盤,新建python文件夾,比如 c:\python\python2 和 c:\python\python3

(2).前往官網下載好相應的python安裝包,選擇自定義安裝(custom installation),勾選添加至系統路徑,安裝位置即(1)中對應文件夾.

  此時,查看系統環境變量中的Path:此電腦->鼠標右鍵->屬性->高級系統設置->環境變量->系統變量->Path,會發現環境變量中多了幾個路徑:

  C:\python\python2;

  C:\python\python2\Scripts;

  C:\python\python3;

  C:\python\python3\Scripts\

  通過查看這些文件夾下的內容,可以發現,比如python2文件夾下放的是python.exe,python2\Scripts\下放的是pip.exe

  系統正是通過這兩個路徑找到的可執行文件,所以我們可以通過改名的方式區分python2和python3

(3).將python3文件夾下的python.exe重命名為python3.exe;

(4).調出cmd終端,分別輸入python 和 python3驗證版本;pip2 -V 和 pip3 -V查看版本

2.下載並配置pyinstaller

(1).更換pip下載源:

  python2:

pip2 config --global set  global.index-url https://mirrors.aliyun.com/pypi/simple/

  python3

pip3 config --global set  global.index-url https://mirrors.aliyun.com/pypi/simple/

(2).更新pip

  python2

python -m pip install --upgrate pip

  python3

python3 -m pip install --upgrade pip

(3).安裝pyinstaller

  python2

pip2 install pyinstaller

  python3

pip3 install pyinstaller

(4).pyinstaller.exe安裝在了Scripts目錄下,因此,只需要將python3\Scripts\目錄下的pyinstaller.exe改名為Pyinstaller3.exe即可;

  如果python3\Scripts\目錄下有pyinstaller-script.py,將其改名為pyinstaller3-script.py

(5).在cmd命令行分別輸入pyinstaller3 -v 和 pyinstaller -v查看版本,查看成功就安裝成功了

腳本

1.pyinstaller打包介紹

pyinstaller -F example.py -p c:/python/python2/Lib/site-packages/

  -p后跟的是依賴庫的位置,也就是site-packages的位置,這樣可以將依賴庫也打到可執行文件里

  如果打出來的包執行時出現了終端黑窗口,可再加一個參數-w

2.簡易python打包腳本

# -*- coding:utf-8 -*-
"""
Auto Pyinstaller
-----------------------
Auther:  Brian
version: 1.0
Time: 2021-02-20
----------------------
"""
import os
import sys

# 查看python版本
import platform
version = (platform.python_version()).split(".")[0]

# 查找python 附加包位置
from distutils.sysconfig import get_python_lib
lib_path = get_python_lib()

def usage():
    print("usage python mkexe.py <file>")
    sys.exit(0)
    

argc = len(sys.argv)
if argc < 2 :
    usage()
elif argc >2:
    usage()

filename = sys.argv[1]

if version == "2":
    # cmd = "pyinstaller -F {0} -p c:\\Python27\\Lib\\site-packages\\".format(filename)
    cmd = "pyinstaller -F {0} -p {1}".format(filename, lib_path)
    print(cmd)
elif version == "3":
    # cmd = "pyinstaller3 -F -w {0} -p C:\\Python3\\Lib\\site-packages\\".format(filename)
    cmd = "pyinstaller3 -F -w {0} -p {1}".format(filename, lib_path)
    print(cmd)
else:
    print("python version: {0}, please set environment  in this file".format(version))
    sys.exit(0)
    

f = os.popen(cmd, "r")
d = f.read()
print(d)
f.close()
print("pyinstaller finished")

  執行 python mkexe.py example.py;生成的可執行文件在dist目錄下

參考

1. 查看python版本
2. 查看site-packages路徑
3. os.popen()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM