Files
2026-01-17 21:21:30 +08:00

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