104 lines
3.1 KiB
Python
104 lines
3.1 KiB
Python
import os
|
|
import pathlib
|
|
import pkg_resources
|
|
import sys
|
|
import sysconfig
|
|
|
|
from ._version import get_versions
|
|
__version__ = get_versions()['version']
|
|
del get_versions
|
|
|
|
major = int(pkg_resources.get_distribution(__name__.partition('.')[0]).version.partition(".")[0])
|
|
|
|
|
|
# TODO: CAMPid 0970432108721340872130742130870874321
|
|
def import_it(*segments):
|
|
import importlib
|
|
|
|
m = {
|
|
"pyqt_tools": "pyqt{major}_tools".format(major=major),
|
|
"pyqt_plugins": "pyqt{major}_plugins".format(major=major),
|
|
"qt_tools": "qt{major}_tools".format(major=major),
|
|
"qt_applications": "qt{major}_applications".format(major=major),
|
|
"PyQt": "PyQt{major}".format(major=major),
|
|
}
|
|
|
|
majored = [m[segments[0]], *segments[1:]]
|
|
return importlib.import_module(".".join(majored))
|
|
|
|
|
|
qt_tools = import_it("qt_tools")
|
|
PyQt = import_it("PyQt")
|
|
import_it("PyQt", "QtCore")
|
|
pyqt_plugins = import_it("pyqt_plugins")
|
|
import_it("pyqt_plugins", "utilities")
|
|
|
|
|
|
pyqt_version = tuple(
|
|
int(segment)
|
|
for segment in PyQt.QtCore.PYQT_VERSION_STR.split('.')
|
|
)
|
|
|
|
root = pathlib.Path(__file__).resolve().parent
|
|
# TODO: so apparently qml wants it all lower case...
|
|
if sys.platform == 'win32':
|
|
root = pathlib.Path(pyqt_plugins.utilities.fspath(root).lower())
|
|
plugins = root.joinpath('Qt', 'plugins')
|
|
|
|
pyqt_root = pathlib.Path(PyQt.__file__).resolve().parent
|
|
if pyqt_version >= (6,):
|
|
pyqt_qt_root = pyqt_root.joinpath('Qt6')
|
|
elif pyqt_version >= (5, 15, 4):
|
|
pyqt_qt_root = pyqt_root.joinpath('Qt5')
|
|
else:
|
|
pyqt_qt_root = pyqt_root.joinpath('Qt')
|
|
pyqt_qml_path = pyqt_qt_root.joinpath('qml')
|
|
pyqt_plugins_path = pyqt_qt_root.joinpath('plugins')
|
|
|
|
|
|
def create_environment(reference=None):
|
|
if reference is None:
|
|
reference = dict(os.environ)
|
|
environment = qt_tools.create_environment(reference=reference)
|
|
|
|
if sys.platform in {'linux', 'darwin'}:
|
|
if sys.platform == 'linux':
|
|
variable = 'LD_LIBRARY_PATH'
|
|
else:
|
|
variable = 'DYLD_LIBRARY_PATH'
|
|
environment.update(pyqt_plugins.utilities.add_to_env_var_path_list(
|
|
env=environment,
|
|
name=variable,
|
|
before=[],
|
|
after=[sysconfig.get_config_var('LIBDIR')],
|
|
))
|
|
|
|
environment.update(pyqt_plugins.utilities.add_to_env_var_path_list(
|
|
env=environment,
|
|
name='QT_PLUGIN_PATH',
|
|
before=[],
|
|
after=[
|
|
pyqt_plugins.utilities.fspath(pyqt_plugins_path),
|
|
pyqt_plugins.utilities.fspath(plugins),
|
|
],
|
|
))
|
|
# TODO: maybe also
|
|
# PyQt.QtCore.QLibraryInfo.location(
|
|
# PyQt.QtCore.QLibraryInfo.PluginsPath,
|
|
# )
|
|
|
|
environment.update(pyqt_plugins.utilities.add_to_env_var_path_list(
|
|
env=environment,
|
|
name='PYTHONPATH',
|
|
before=sys.path,
|
|
after=[''],
|
|
))
|
|
environment.update(pyqt_plugins.utilities.add_to_env_var_path_list(
|
|
env=environment,
|
|
name='PATH',
|
|
before=sys.path,
|
|
after=[''],
|
|
))
|
|
|
|
return environment
|