一、引言

需要将一个工程涉及两个目录的模块文件打包成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。具体工程情况如下:



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

  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前加入如下代码:
  1. import sys
  2. 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方式加载,则打包时只能采用第一种方式。

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

老猿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 + 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+Python3+python工程打包成exe+在windows下自动定时运行

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

随机推荐

  1. W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

    在执行sudo update-initramfs -u过程中 出现这个错误意思就是说少了固件,只要去下载放到/lib/firmware/i915文件夹下就好了. 下载链接如下: https://git ...

  2. 内网渗透 day7-linux信息收集

    linux信息搜集 目录 1. linux信息搜集 2. nmap漏洞复现 3. msf linux模块反弹shell 1. linux信息搜集 id 查看当前用户的权限和所在的管理组 python ...

  3. CV 履历 格式

    CV 指的是 "Curriculum Vitae" Curriculum vitae 在拉丁语中的意思是"生命的故事" CV 经常被称为 "Resum ...

  4. 使用css控制table的cellspacing和cellpadding属性

    HTML默认的表格样式之间有间隙,每次为了解决这些问题,总要在table标签里添加cellspacing和cellpadding,你是否也很厌倦这样的写法, 那么有没有对应的CSS属性能达到相同的效果 ...

  5. MySQL全面瓦解11:子查询和组合查询

    概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...

  6. linux之HTTP服务

    1.基本的配置   httpd:俗称Apache (A pachey Server) /etc/httpd/conf/httpd.conf            #配置文件 /etc/httpd/co ...

  7. ceph 的crush算法 straw

    很多年以前,Sage 在写CRUSH的原始算法的时候,写了不同的Bucket类型,可以选择不同的伪随机选择算法,大部分的模型是基于RJ Honicky写的RUSH algorithms 这个算法,这个 ...

  8. Nacos 多环境配置

    本文探讨Nacos作为配置中心,如何实现不同环境(开发.测试.灰度.正式)的配置管理问题 就像Maven用groupId.artifactId.version三者来定位jar包在仓库中的位置一样,Na ...

  9. 如何给input或textarea文字加背景色

    需求说明 如果要实现一个需求,如下图,在一个textarea中加入文字加背景色,该怎么处理呢? 答案:"很简单啊!直接给textarea加个background-color的背景颜色啊!&q ...

  10. RedisUtils工具类

    package test.util; import org.springframework.beans.factory.annotation.Autowired; import org.springf ...