diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ba0d90eb7..32dd2d47a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.18.2] - Nov. XX, 2024 +## [0.18.3] - Dec. XX, 2024 + +### Fixed + +* Enabled `dpctl` in virtual environment on Windows platform (issue [gh-1745](https://github.com/IntelPython/dpctl/issues/1745)) [gh-1924](https://github.com/IntelPython/dpctl/pull/1924) + +## [0.18.2] - Nov. 21, 2024 ### Maintenance diff --git a/dpctl/__init__.py b/dpctl/__init__.py index b7f85cea99..0eb474602b 100644 --- a/dpctl/__init__.py +++ b/dpctl/__init__.py @@ -26,6 +26,7 @@ import os import os.path +from . import _init_helper from ._device_selection import select_device_with_aspects from ._sycl_context import SyclContext, SyclContextCreationError from ._sycl_device import ( @@ -137,3 +138,4 @@ def get_include(): __version__ = get_versions()["version"] del get_versions +del _init_helper diff --git a/dpctl/_init_helper.py b/dpctl/_init_helper.py new file mode 100644 index 0000000000..8ced7eee41 --- /dev/null +++ b/dpctl/_init_helper.py @@ -0,0 +1,34 @@ +# Data Parallel Control (dpctl) +# +# Copyright 2020-2024 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import os.path +import sys + +is_venv_win32 = ( + sys.platform == "win32" + and sys.base_exec_prefix != sys.exec_prefix + and os.path.isfile(os.path.join(sys.exec_prefix, "pyvenv.cfg")) +) + +if is_venv_win32: + # For virtual environments on Windows, add folder + # with DPC++ libraries to the DLL search path gh-1745 + dll_dir = os.path.join(sys.exec_prefix, "Library", "bin") + if os.path.isdir(dll_dir): + os.add_dll_directory(dll_dir) + +del is_venv_win32