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目录下
PS: 后来打包时,发现执行exe报错:RuntimeError: input(): lost sys.stdin,建议参考pyinstaller打包 input报错pyinstaller打包 input报错RuntimeError: input(): lost sys.stdin,即去掉打包中的 -w 参数。
参考
1.查看python版本
2.查看site-packages路径
3.os.popen()
win10: pyinstaller在python2和python3环境下的适应性配置的更多相关文章
- Flawfinder在Python2和Python3环境下对代码进行扫描方法
1. Flawfinder Flawfinder是一款开源的关于C/C++静态扫描分析工具,其根据内部字典数据库进行静态搜索,匹配简单的缺陷与漏洞. 官网:https://dwheeler.com/f ...
- urllib库在python2和python3环境下的使用区别
好东西啊!!! Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve() urllib.urlclea ...
- 基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习
本文在windows下使用visual studio2013配置关联python(python-2.7.12.amd64.msi)的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己 ...
- Ubuntu环境下的Redis 配置与C++使用入门
Redis是一个高性能的key-value数据库. Redisedis的出现,非常大程度补偿了memcached这类key/value存储的不足,在部分场合能够对关系数据库起到非常好的补充作用.它 ...
- Windows环境下完全手工配置Apache、MySQL和PHP
现在LAMP(Linux.Apache.MySQL.PHP/Perl/Python的简称)已经很流行了.在Windows下也有类似的,比如 WAMP(Apache, MySQL, PHP on Win ...
- Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)
本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...
- Anaconda快捷搭建Python2和Python3环境
我们在使用Pycharm编辑Python程序经常会因为不熟悉Python2和Python3的一些代码区别而导致错误,我们知道他们之间很多代码是必须运行在对应版本中的,否则是会报错的.因此,本文介绍一个 ...
- Python: 下载底层由Python2转Python3环境更新手记
谨记录运行环境改变过程中所碰到的坑. 下载底层运行环境由Python2移至Python3所遇到的问题及处理方法: 1.所引的第三方组件,基本都有替代支持:msvcr90.dll不再需要,有则报错2.引 ...
- Win10环境下YOLO5 快速配置与测试
目录 一.更换官方源 二.安装Pytorch+CUDA(python版本) 三.YOLO V5 配置与验证 四.数据集测试 五.小结 不想看前面,可以直接跳到标题: 一.更换官方源 在 YOLO V5 ...
- python2 和python3共存下问题
一.使用python2 or python3 1. 使用python2 $ python xxx.py 2. 使用python3 $ python3 xxx.py 二.脚本调用 /usr/bin/en ...
随机推荐
- three.js教程8-渲染器WebGLRenderer和前端UI界面
1.html的UI交互界面与Canvas画布叠加 需求:把threejs Cavnas画布和HTML元素叠加布局,在canvas上添加按钮,通过按钮点击修改canvas场景. // canvas画布绝 ...
- three.js教程2-几何体BufferGeomety顶点
1.网格模型(三角形概念) 网格模型Mesh其实就一个一个三角形(面)拼接构成.使用使用网格模型Mesh渲染几何体geometry,就是几何体所有顶点坐标三个为一组,构成一个三角形,多组顶点构成多个三 ...
- Chrome 插件 V3 版本 Manifest.json 中的内容脚本(Content Scripts)解析
内容脚本(Content Scripts) 指定在用户打开某些网页时要使用的 JavaScript 或 CSS 文件. 内容脚本是在网页环境中运行的文件.通过使用标准文档对象模型 (DOM),开发者能 ...
- 密码学—Kasiski测试法Python程序
Kasiski Kasiski是辅助破解Vigenere的前提工作,Kasiski是猜测加密者使用Vigenere密码体系的密钥的长度,Kasiski只是猜测长度而已,所以说是辅助破解Vigenere ...
- C语言:单链表删除学生信息,增加学生信息(简易版)
假设用户都是正常的,不会输入一些乱七八糟的东西. 功能1:输出学生学号和成绩,用动态连链表来存放,继续存放学生信息的时候可以继续输入之前输入过的学号信息,打印的时候会分开打印(因为是简易版本,没有太完 ...
- 复杂模式的两个List与Map合并为一个Map的拼接;笛卡尔乘积处理数据问题
简介 (Introduction): 背景 数据从多个表中获取,每个表的数据条数不是唯一的,最后结果要拼接成一个Map<String,Object>的模式封装所有数据,每个数据是一条. 结 ...
- ETSI GS MEC 014,UE 标识 API
目录 文章目录 目录 版本 功能理解 UML UE Identity tag registration UE Identity tag de-registration API Definition U ...
- 【C#】关于ACCESS数据库insert into报错:标准表达式中数据类型不匹配
如果插入列有日期/时间类型,使用C#时,var ptime = new OleDbParameter("@DtTime", OleDbType.Date); OleDbType.D ...
- RunnerGo V4.6.0 新增功能介绍
RunnerGo 最新V4.6.0版本不仅对原有功能进行了深度优化和改进,还新增了一些新功能. UI 插件:浮窗升级,优化浏览体验 此次更新UI插件全新升级至V2.1版本.新版取消了页面内右下角按钮的 ...
- Java常用的三个方法 `wait ` `notify` `notifyAll`
常用的三个方法 wait notify notifyAll wait();方法使当前线程进入等待状态,直到另一个线程调用该对象的notify()或notifyAll()方法来唤醒它 notify(); ...