如何指示要导入到PyInstaller的特定模块?

时间:2019-07-15 10:04:40

标签: python pyinstaller

我正在尝试使用PyInstaller创建应用程序,并且如果我将python库源中的plotly文件夹复制并粘贴到我的应用程序所在的文件夹中,它将可以正常工作。但是,如果我不这样做,该程序将无法正常工作。

我已经尝试使用隐藏的导入,如下所示在我的.spec文件中。

# -*- mode: python ; coding: utf-8 -*-

import sys
sys.setrecursionlimit(5000)

block_cipher = None

options = []


a = Analysis(['application.py'],
             pathex=['C:\\path_to_application', \
             'C:\\path_to_python_libs'],
             binaries=[],
             datas=[ ('logo.png', '.') ],
             hiddenimports=['plotly.offline', 'plotly.graph_objs', 'datetime', 'time'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          options,
          [],
          exclude_binaries=True,
          name='application',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=False,
          console=True)
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=False,
               upx_exclude=[],
               name='application')

我收到以下错误(因为尚未创建plotly文件夹):

Traceback (most recent call last):
  File "vibration_analysis.py", line 255, in <module>
  File "waterfall_FFT2.py", line 249, in waterfall_plot
  File "site-packages\plotly\offline\offline.py", line 558, in plot
  File "site-packages\plotly\io\_html.py", line 482, in write_html
  File "site-packages\plotly\io\_html.py", line 279, in to_html
  File "site-packages\plotly\offline\offline.py", line 87, in get_plotlyjs
  File "pkgutil.py", line 637, in get_data
  File "c:\users\bergon julien\anaconda3\lib\site-packages\PyInstaller\loader\py
imod03_importers.py", line 475, in get_data
    with open(path, 'rb') as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\path_to_application\\plotly\\package_data\\plotly.min.js'

2 个答案:

答案 0 :(得分:1)

您可以使用add-data标志将您的App依赖项添加为数据文件。另外,如果要添加整个目录,则可以使用Tree类。因此,编辑您的规范文件并为Tree添加ploty类:

# -*- mode: python ; coding: utf-8 -*-

import sys
sys.setrecursionlimit(5000)

block_cipher = None

options = []


a = Analysis(['application.py'],
            ...
             noarchive=False)
a.datas += Tree('<path_to_ploty_dir>', prefix='./ploty')
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
...

并使用pyinstaller application.spec生成可执行文件。

答案 1 :(得分:0)

您可以使用py2exePyInstaller更好,更轻松。 their tutorialYouTube video的操作方法。