【问题标题】:Subfolders with python code pyinstaller带有 python 代码 pyinstaller 的子文件夹
【发布时间】:2018-08-10 00:13:54
【问题描述】:

假设这是我的文件结构:

main.py
modules
  |--> feature1.py
  |--> feature2.py
  |--> feature3.py

我的main.py 代码如下:

from modules.feature1 import Awesomefeature
...

我为PyInstaller 使用了以下规范文件:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['main.py'],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='main',
          debug=False,
          strip=False,
          upx=False,
          runtime_tmpdir=None,
          console=True , icon='icon.ico')

不幸的是,在我将代码编译为 Windows 可执行文件并执行此(main.exe 文件)后,我收到以下消息:

ModuleNotFoundError: no module named 'modules'

在使用 pyinstaller 时,是否完全不可能在其中包含带有 pythoncode 的子文件夹?

【问题讨论】:

  • 您的规范文件看起来很奇怪。你是用 pyinstaller 创建的吗?
  • 是的,但是我在“蛮力”尝试尝试所有可能的选项时省略了一些标签。

标签: python python-3.x pyinstaller python-module


【解决方案1】:

尝试将 pathex 列表添加到带有项目根目录路径的规范文件中。

a = Analysis(['main.py']),
             pathex=['C:/Users/<user>/Path to the root directory'],
             # rest of spec file

有时您需要将模块位置添加到 pathex 列表中。这是 pyinstaller 将首先搜索的路径列表。

【讨论】:

  • 我试过了,但我得到了同样的信息。然而,可执行文件的文件大小增加了。我使用:pathex=['/src/', '/src/modules/'],
  • 从路径中删除前导和尾随 '/'。
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2023-04-02
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多