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()