Beispiel #1
0
def get_qt_qml_files(qt_library_info):
    # No-op if requested Qt-based package is not available
    if qt_library_info.version is None:
        return [], []

    # Not all PyQt5/PySide2 installs have QML files. In this case,
    # location['Qml2ImportsPath'] is empty. Furthermore, even if location
    # path is provided, the directory itself may not exist.
    #
    # https://github.com/pyinstaller/pyinstaller/pull/3229#issuecomment-359735031
    # https://github.com/pyinstaller/pyinstaller/issues/3864
    qmldir = qt_library_info.location['Qml2ImportsPath']
    if not qmldir or not os.path.exists(qmldir):
        logger.warning(
            'QML directory for %s, %r, does not exist. '
            'QML files not packaged.', qt_library_info.namespace, qmldir)
        return [], []

    qml_rel_dir = os.path.join(qt_library_info.qt_rel_dir, 'qml')
    datas = [(qmldir, qml_rel_dir)]
    binaries = [
        # Produce ``/path/to/Qt/Qml/path_to_qml_binary/qml_binary,
        # PyQt5/Qt/Qml/path_to_qml_binary``.
        (f,
         os.path.join(qml_rel_dir, os.path.dirname(os.path.relpath(f,
                                                                   qmldir))))
        for f in misc.dlls_in_subdirs(qmldir)
    ]

    return binaries, datas
Beispiel #2
0
def qt5_qml_plugins_binaries(dir):
    """Return list of dynamic libraries formatted for mod.binaries."""
    binaries = []
    qmldir = qt5_qml_dir()
    files = misc.dlls_in_subdirs(os.path.join(qmldir, dir))
    for f in files:
        relpath = os.path.relpath(f, qmldir)
        instdir, file = os.path.split(relpath)
        instdir = os.path.join("qml", instdir)
        logger.debug("qt5_qml_plugins_binaries installing %s in %s"
                     % (f, instdir) )

        binaries.append((
            os.path.join(instdir, os.path.basename(f)),
                f, 'BINARY'))
    return binaries    
def qt5_qml_plugins_binaries(qmldir, directory):
    """
    Return list of dynamic libraries formatted for mod.binaries.
    """
    binaries = []

    qt5_qml_plugin_dir = os.path.join(qmldir, directory)
    files = misc.dlls_in_subdirs(qt5_qml_plugin_dir)

    for f in files:
        relpath = os.path.relpath(f, qmldir)
        instdir, file = os.path.split(relpath)
        instdir = os.path.join("qml", instdir)
        logger.debug("qt5_qml_plugins_binaries installing %s in %s", f,
                     instdir)
        binaries.append((f, instdir))
    return binaries
def qt5_qml_plugins_binaries(qmldir, directory):
    """
    Return list of dynamic libraries formatted for mod.binaries.
    """
    binaries = []

    qt5_qml_plugin_dir = os.path.join(qmldir, directory)
    files = misc.dlls_in_subdirs(qt5_qml_plugin_dir)

    for f in files:
        relpath = os.path.relpath(f, qmldir)
        instdir, file = os.path.split(relpath)
        instdir = os.path.join("qml", instdir)
        logger.debug("qt5_qml_plugins_binaries installing %s in %s",
                     f, instdir)
        binaries.append((f, instdir))
    return binaries
Beispiel #5
0
def qt5_qml_plugins_binaries(dir):
    """Return list of dynamic libraries formatted for mod.pyinstaller_binaries."""
    import string

    binaries = []
    qmldir = qt5_qml_dir()
    dir = string.rstrip(dir, os.sep)
    files = misc.dlls_in_subdirs(os.path.join(qmldir, dir))
    if files is not None:
        for f in files:
            relpath = os.path.relpath(f, qmldir)
            instdir, file = os.path.split(relpath)
            instdir = os.path.join("qml", instdir)
            logger.debug("qt5_qml_plugins_binaries installing %s in %s" % (f, instdir))

            binaries.append((os.path.join(instdir, os.path.basename(f)), f, "BINARY"))
    return binaries
Beispiel #6
0
def qt5_qml_plugins_binaries(dir):
    """Return list of dynamic libraries formatted for mod.pyinstaller_binaries."""
    import string
    binaries = []
    qmldir = qt5_qml_dir()
    dir = string.rstrip(dir, os.sep)
    files = misc.dlls_in_subdirs(os.path.join(qmldir, dir))
    if files is not None:
        for f in files:
            relpath = os.path.relpath(f, qmldir)
            instdir, file = os.path.split(relpath)
            instdir = os.path.join("qml", instdir)
            logger.debug("qt5_qml_plugins_binaries installing %s in %s" %
                         (f, instdir))

            binaries.append((os.path.join(instdir,
                                          os.path.basename(f)), f, 'BINARY'))
    return binaries
Beispiel #7
0
import os

from PyInstaller.utils import misc
from PyInstaller.utils.hooks.qt import pyside2_library_info, add_qt5_dependencies
from PyInstaller import log as logging

# Only proceed if PySide2 can be imported.
if pyside2_library_info.version:
    logger = logging.getLogger(__name__)

    hiddenimports, binaries, datas = add_qt5_dependencies(__file__)

    qmldir = pyside2_library_info.location['Qml2ImportsPath']
    # Not all PySide2 installs have QML files. In this case, ``qmldir`` is empty. In
    # addition, the directory may not exist even if ``qmldir`` is not empty.
    if not os.path.exists(qmldir):
        logger.warning('Unable to find Qt5 QML files. QML files not packaged.')
    else:
        qml_rel_dir = ['PySide2', 'qml']
        datas += [(qmldir, os.path.join(*qml_rel_dir))]
        binaries += [
            # Produce ``/path/to/Qt/Qml/path_to_qml_binary/qml_binary,
            # PyQt5/Qt/Qml/path_to_qml_binary``. When Python 3.4 goes EOL (see
            # PEP 448), this is better written as
            # ``os.path.join(*qml_rel_dir,
            # os.path.dirname(os.path.relpath(f, qmldir))))``.
            (f, os.path.join(*(qml_rel_dir +
                               [os.path.dirname(os.path.relpath(f, qmldir))])))
            for f in misc.dlls_in_subdirs(qmldir)
        ]
Beispiel #8
0
qmldir = pyqt5_library_info.location['Qml2ImportsPath']
# Per https://github.com/pyinstaller/pyinstaller/pull/3229#issuecomment-359735031,
# not all PyQt5 installs have QML files. In this case, ``qmldir`` is empty.
if not qmldir:
    logger.warning('Unable to find Qt5 QML files. QML files not packaged.')
else:
    qml_rel_dir = ['PyQt5', 'Qt', 'qml']
    for directory in dirs:
        # Add base qml directories.
        this_qml_dir = os.path.join(qmldir, directory)
        datas += [
            # When Python 3.4 goes EOL (see
            # `PEP 448 <https://www.python.org/dev/peps/pep-0448/>`_, this is
            # better written as ``os.path.join(*qml_rel_dir, directory)``.
            (this_qml_dir, os.path.join(*(qml_rel_dir + [directory]))),
        ]

        # Add binaries.
        binaries += [
            # Produce ``/path/to/Qt/Qml/path_to_qml_binary/qml_binary,
            # PyQt5/Qt/Qml/path_to_qml_binary``. When Python 3.4 goes EOL (see
            # `PEP 448`_, this is better written as
            # ``os.path.join(*qml_rel_dir,
            # os.path.dirname(os.path.relpath(f, qmldir))))``.
            (f,
             os.path.join(*(qml_rel_dir +
                            [os.path.dirname(os.path.relpath(f, qmldir))])))
            for f in misc.dlls_in_subdirs(this_qml_dir)
        ]
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
import os

from PyInstaller.utils import misc
from PyInstaller.utils.hooks import pyqt5_library_info, add_qt5_dependencies
from PyInstaller import log as logging

logger = logging.getLogger(__name__)

hiddenimports, binaries, datas = add_qt5_dependencies(__file__)

qmldir = pyqt5_library_info.location['Qml2ImportsPath']
# Per https://github.com/pyinstaller/pyinstaller/pull/3229#issuecomment-359735031,
# not all PyQt5 installs have QML files. In this case, ``qmldir`` is empty.
if not qmldir:
    logger.warning('Unable to find Qt5 QML files. QML files not packaged.')
else:
    qml_rel_dir = ['PyQt5', 'Qt', 'qml']
    datas += [(qmldir, os.path.join(*qml_rel_dir))]
    binaries += [
        # Produce ``/path/to/Qt/Qml/path_to_qml_binary/qml_binary,
        # PyQt5/Qt/Qml/path_to_qml_binary``. When Python 3.4 goes EOL (see
        # PEP 448), this is better written as
        # ``os.path.join(*qml_rel_dir,
        # os.path.dirname(os.path.relpath(f, qmldir))))``.
        (f, os.path.join(*(qml_rel_dir +
                           [os.path.dirname(os.path.relpath(f, qmldir))])))
        for f in misc.dlls_in_subdirs(qmldir)
    ]