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环境下的适应性配置的更多相关文章

  1. Flawfinder在Python2和Python3环境下对代码进行扫描方法

    1. Flawfinder Flawfinder是一款开源的关于C/C++静态扫描分析工具,其根据内部字典数据库进行静态搜索,匹配简单的缺陷与漏洞. 官网:https://dwheeler.com/f ...

  2. urllib库在python2和python3环境下的使用区别

    好东西啊!!! Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve() urllib.urlclea ...

  3. 基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习

    本文在windows下使用visual studio2013配置关联python(python-2.7.12.amd64.msi)的caffe项目,如果有耐心的人,当然可以自己去下载caffe项目自己 ...

  4. Ubuntu环境下的Redis 配置与C++使用入门

      Redis是一个高性能的key-value数据库. Redisedis的出现,非常大程度补偿了memcached这类key/value存储的不足,在部分场合能够对关系数据库起到非常好的补充作用.它 ...

  5. Windows环境下完全手工配置Apache、MySQL和PHP

    现在LAMP(Linux.Apache.MySQL.PHP/Perl/Python的简称)已经很流行了.在Windows下也有类似的,比如 WAMP(Apache, MySQL, PHP on Win ...

  6. Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)

    本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...

  7. Anaconda快捷搭建Python2和Python3环境

    我们在使用Pycharm编辑Python程序经常会因为不熟悉Python2和Python3的一些代码区别而导致错误,我们知道他们之间很多代码是必须运行在对应版本中的,否则是会报错的.因此,本文介绍一个 ...

  8. Python: 下载底层由Python2转Python3环境更新手记

    谨记录运行环境改变过程中所碰到的坑. 下载底层运行环境由Python2移至Python3所遇到的问题及处理方法: 1.所引的第三方组件,基本都有替代支持:msvcr90.dll不再需要,有则报错2.引 ...

  9. Win10环境下YOLO5 快速配置与测试

    目录 一.更换官方源 二.安装Pytorch+CUDA(python版本) 三.YOLO V5 配置与验证 四.数据集测试 五.小结 不想看前面,可以直接跳到标题: 一.更换官方源 在 YOLO V5 ...

  10. python2 和python3共存下问题

    一.使用python2 or python3 1. 使用python2 $ python xxx.py 2. 使用python3 $ python3 xxx.py 二.脚本调用 /usr/bin/en ...

随机推荐

  1. USB3.0与Type-C接口的关系

    USB全称为Universal Serial Bus,翻译过来就是通用串行总线,是连接计算机与外部设备的一种串口总线标准.USB的发展经历了一下阶段: USB1.0:1.5Mbps(192KB/s)低 ...

  2. Ajax 请求总共有八种 Callback

    1)onSuccess 2)onFailure 3)onUninitialized 4)onLoading 5)onLoaded 6)onInteractive 7)onComplete 8)onEx ...

  3. 数据库—安全性控制DCL

    文章目录 授予数据库权限 授予用户能够授予其他用户的权限 收回权限 数据库的权限(特殊) 授予数据库权限 这里的用户是指数据库DBMS中创建的用户,而不是程序中的账户用户. 授予某个/多个表的某一个/ ...

  4. C数据结构:循环队列的顺序存储结构

    顺序队列目录 队列的定义 定义 假溢出 空间浪费的缺点 如何解决 循环队列的缺点 *==主要的算法思想(重要)==* 如何理解循环队列(必看) 结构体代码 两种实现方法 **①循环队列,队头和队尾指针 ...

  5. NumPy 数组排序、过滤与随机数生成详解

    NumPy 数组排序 排序数组 排序数组意味着将元素按特定顺序排列.顺序可以是数字大小.字母顺序.升序或降序等. NumPy 的 ndarray 对象提供了一个名为 sort() 的函数,用于对数组进 ...

  6. 分布式任务调度内的 MySQL 分页查询优化

    作者:vivo 互联网数据库团队- Qiu Xinbo 本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题.对 ...

  7. 通过 Wireshark 解密 Kerberos 票据

    前言 在使用 Wireshark 分析 Active Directory 的 Kerberos 的流量时,会遇到加密票据的情况,这对进一步探究 AD 下的漏洞篡改事件的详细过程造成了影响.在查询资料时 ...

  8. 微信小程序,wx.getUserProfile接口将被收回,新的头像获取方式永久保存

    微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ 新的获取头像方式:https://developers.weixin. ...

  9. Django——form组件的局部钩子

    如果对字段的校验条件太少,不能满足我们的需求,那么,我们可以对每个字段自定义校验的内容,就可以使用局部钩子. 局部钩子的使用方法: (1)导入错误类型 ----> 我们自己定义的钩子抛出的错误也 ...

  10. 【JS】await异常捕获,这样做才完美

    缘由 JS中async/await异步调用,只能通过try-catch吗? 你想听的故事: 作为一个合格的全栈搬砖工,那必须文武双全,前后必备.遂吾日三省吾身,偶发觉前端长时间不写有些落下,便抽用了摸 ...