windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件

时间:2023-02-04 17:10:02

一、引言

需要将一个工程涉及两个目录的模块文件打包成exe,打包环境如下:

1、windows7;

2、Python 3.7.2;

3、PyInstaller 3.6 。

二、操作步骤

2.1、使用清华镜像下载并安装pyinstaller,

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

2.2、安装成功后进入DOS命令行

进入模块classA所在目录:F:\学习\python\project\classA

也可以在PyCharm的terminal方式下操作,但个人觉得反而不如DOS方式方便。

2.3、一个工程两个目录的情况

两个目录的模块文件非常简单,就是分别定义了classA和classB的构造方法和析构方法,在模块classA中使用了另一个目录下的模块classB。具体工程情况如下:

windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件

由于没有查到多目录打包相关的文档,尝试用多种方式执行打包命令:

  1. pyinstaller classA.py classB.py -p F:\学习\python\project\classA;F:\学习\python\project\classB

    报错:ValueError: script ‘F:\学习\python\project\classA\classB.py’ not found,可以看到classB.py目录找错了
  2. pyinstaller classA.py classB.py -p F:\学习\python\project\classA; -p F:\学习\python\project\classB,报相同的错误
  3. pyinstaller classA.py F:\学习\python\project\classB\classB.py

    打包成功,打包文件在classA所在目录下的dist,即F:\学习\python\project\classA\dist\classA下,执行文件为classA.exe,拷贝F:\学习\python\project\classA\dist\classA整个目录到其他未安装Python的机器上能正常执行
  4. pyinstaller classA.py -p F:\学习\python\project\classB

    打包成功,但在代码中执行import classB.classB时报错:ModuleNotFoundError: No module named 'classB',但如在import classB.classB前加入如下代码:
import sys
sys.path.append("F:\学习\python\project")

可以正常打包和执行。

5. pyinstaller classA.py -p F:\学习\python\project

打包成功,执行成功。

三、 结论

在执行两个目录的py文件打包时,只需要在其中一个目录下运行,打包时:

  • 包含主程序的py文件必须是命令行中输入py文件列表的第一个文件(假设为xxx.py)
  • 在没有其他参数设置的情况下,输出目录缺省在执行打包所在的目录的dist\xxx子目录下
  • 与主程序相关的其他py模块文件,包括其他目录的py文件,可以在打包时有多种处理方式,但无论哪种方式,都是告知打包程序其他文件所在的路径
  1. 第一种方式就是在命令行第一个py文件后,将所有py文件都列出,但不在当前目录的文件要带文件路径;
  2. 第二种方式,所有主程序import的模块(或在import模块中再import的模块,依次类推),都无需将对应py文件在打包命令行中列出,打包程序会根据import关系自动打包,但必须确保相关文件所在目录必须在打包程序搜索路径上,这个路径可以是Python的使用的环境变量、可以是打包命令的-p或–paths参数指定路径(可以每个目录带一个-p或–paths 前导选项)、也可以是一个前导带多个目录,每个目录用分号分隔,也可以是py文件中sys.path.append的路径。

    可能还有更多的其他方式,但有这几种足够使用了。但注意 如果对应py文件不能通过第二种import方式加载,则打包时只能采用第一种方式。

如果涉及多个目录,与两个目录的情况类似。

windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件

老猿Python,跟老猿学Python!

windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件的更多相关文章

  1. windows下如何将Python文件打包成.exe可执行文件

    在使用Python做开发的时候,时不时会给自己编写了一些小工具辅助自己的工作,但是由于开发依赖环境问题,多数只能在自己电脑上运行,拿到其它电脑后就没法运行了.这显得很不方便,不符合我们的初衷,那么有没 ...

  2. windows下使用pyinstaller把python文件打包成exe可执行文件

    使用pyinstaller打包有个好处就是所有依赖都打包进去了,可以随意把文件移动到别的电脑上使用 安装 pip install pyinstaller 新建一个demo.py文件 #!/usr/bi ...

  3. PyQt(Python+Qt)学习随笔:windows下使用pyinstaller将PyQt文件打包成exe可执行文件

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<windows下使用pyinstaller将多个目录的Pyt ...

  4. 用pyinstaller把python代码打包成exe可执行文件

    优点: 1. pyinstaller 是跨平台的可以用在linux和windows系统上 2. 操作非常简单,几个命令就搞定了,这个比py2exe容易用多了 缺点: 1. 打包后的体积过大,因为要带p ...

  5. python &plus; pyinstaller 实现将python程序打包成exe文件直接运行

    pyinstaller 我们在平常学习使用python的时候经常会自己编写一些小程序来使用,虽然python是跨平台的语言,但是如果我们想要在一个没有python以及很多库环境的电脑上使用我们的小程序 ...

  6. pyinstaller使用-python项目转换成exe可执行文件

    http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...

  7. Pycharm下将py文件打包成exe文件

    1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程   2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...

  8. win7下用PyInstaller把Python代码打包成exe文件

    2013-11-05 22:02:14|   1.安装 使用PyInstaller需要安装PyWin32. 下载与Python对应的PyInstaller版本,解压后就算安装好了. 例如,安装了PyI ...

  9. Pycharm&plus;Python3&plus;python工程打包成exe&plus;在windows下自动定时运行

    python3打包成exe---pyinstaller方法:https://www.cnblogs.com/mufenglin/p/7479281.html 按照如上方式打包后,执行dist文件夹(新 ...

随机推荐

  1. MySQL有趣的查询方式

    背景介绍 美国大选开始了,国防部要求我对两个总统候选人的票数进行统计.我首先简单的进行一次无条件查询,了解了一下表格的结构及所有数据长什么样子. select * from foo 查询到的结果令我很 ...

  2. 点击表格tr同时点击checkbox

    项目里偶然要用到这个功能,写到了就记一下吧.

  3. js渐隐渐入渐出效果 fadeOut fadeIn

    //fadeOut //function start function fadeOut(ele,speed){ var ele=document.getElementById(ele); var op ...

  4. FireFox &amp&semi; Chrome 使用技巧

    一 FireFox 1 安装调试工具 Firebug , HttpRequester 2 打开响应式布局 打开菜单 -> 开发者 -> 响应式设计视图 二 Chrome 1 修改Chrom ...

  5. 锋利的JQuery(五)

    jQuery与Ajax: load: load(url)   $("#resText").load("test.html")  加载所有元素 load(url ...

  6. qwe框架- CNN 实现

    CNN实现 概述 我在qwe中有两种,第一种是按照Ng课程中的写法,多层循环嵌套得到每次的"小方格",然后WX+b,这样的做法是最简单,直观.但是效率极其慢.基本跑个10张以内图片 ...

  7. lamp环境搭建经验总结

    环境:centos6.4,13个源码包:参考教程高罗峰细说php思路:1.首先确定gcc,g++的安装,因为这是c语言的编译工具,没有它,源码不可能安装,redhat的yum需要配置,分为本地源和网络 ...

  8. (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198&sol;213&sol;337)

    题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...

  9. LindDotNetCore~添加路由前缀

    回到目录 路由前缀就是我们所说的api/values里的api,这里的api可以用其它具体含义的字符表示,如Shop,Order,Game,它可以表示一个个模块,这一般在单体架构里;也可以是一个个小服 ...

  10. SLAM&plus;语音机器人DIY系列:(二)ROS入门——6&period;编写简单的service和client

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...