diff --git a/CHANGELOG.md b/CHANGELOG.md index 7458ef021ae8..72c5b6729890 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +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.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.16.2] - 12/20/2024 + +### Fixed + +* Enabled `dpnp` in virtual environment on Windows platform [#2242](https://github.com/IntelPython/dpnp/pull/2242) + + ## [0.16.1] - 12/06/2024 This is a bug-fix release. diff --git a/dpnp/__init__.py b/dpnp/__init__.py index be3b1bf949d4..1ad6aeccb55e 100644 --- a/dpnp/__init__.py +++ b/dpnp/__init__.py @@ -25,6 +25,7 @@ # ***************************************************************************** import os +import sys mypath = os.path.dirname(os.path.realpath(__file__)) @@ -45,10 +46,22 @@ if hasattr(os, "add_dll_directory"): os.add_dll_directory(mypath) os.add_dll_directory(dpctlpath) + os.environ["PATH"] = os.pathsep.join( [os.getenv("PATH", ""), mypath, dpctlpath] ) + # For virtual environments on Windows, add folder with DPC++ libraries + # to the DLL search path + if sys.base_exec_prefix != sys.exec_prefix and os.path.isfile( + os.path.join(sys.exec_prefix, "pyvenv.cfg") + ): + dll_path = os.path.join(sys.exec_prefix, "Library", "bin") + if os.path.isdir(dll_path): + os.environ["PATH"] = os.pathsep.join( + [os.getenv("PATH", ""), dll_path] + ) + # Borrowed from DPCTL from dpctl.tensor import DLDeviceType