diff --git a/generators/VirtualPythonEnv.py b/generators/VirtualPythonEnv.py index 84c0758..d77fc2f 100644 --- a/generators/VirtualPythonEnv.py +++ b/generators/VirtualPythonEnv.py @@ -84,7 +84,7 @@ class VirtualPythonEnv(Generator): env.prepend_path("PYTHONPATH", pythonpath) env.unset("PYTHONHOME") - envvars = env.vars(self.conanfile, scope = "run") + envvars = env.vars(conanfile, scope = "run") # Install some base_packages conanfile.run(f"""{python_venv_interpreter} -m pip install wheel setuptools""", run_environment = True, env = "conanrun") @@ -137,14 +137,30 @@ class VirtualPythonEnv(Generator): run_environment = True, env = "conanrun") - # Generate the Python Virtual Environment Script - envvars.save_sh(Path(venv_folder, self._venv_path, "activate")) - envvars.save_bat(Path(venv_folder, self._venv_path, "activate.bat")) - envvars.save_ps1(Path(venv_folder, self._venv_path, "Activate.ps1")) + # Add all dlls/dylibs/so found in site-packages to the PATH, DYLD_LIBRARY_PATH and LD_LIBRARY_PATH + dll_paths = list({ dll.parent for dll in Path(pythonpath).glob("**/*.dll") }) + for dll_path in dll_paths: + env.append_path("PATH", str(dll_path)) + + dylib_paths = list({ dylib.parent for dylib in Path(pythonpath).glob("**/*.dylib") }) + for dylib_path in dylib_paths: + env.append_path("DYLD_LIBRARY_PATH", str(dylib_path)) + + so_paths = list({ so.parent for so in Path(pythonpath).glob("**/*.dylib") }) + for so_path in so_paths: + env.append_path("LD_LIBRARY_PATH", str(so_path)) - with open(Path(__file__).parent.joinpath("VirtualPythonEnvResources", "activate_github_actions_buildenv.jinja"), "r") as f: - env_prefix = "Env:" if self.conanfile.settings.os == "Windows" else "" - activate_github_actions_buildenv = Template(f.read()).render(envvars = envvars, env_prefix = env_prefix) + full_envvars = env.vars(conanfile, scope = "run") + + # Generate the Python Virtual Environment Script + full_envvars.save_sh(Path(venv_folder, self._venv_path, "activate")) + full_envvars.save_bat(Path(venv_folder, self._venv_path, "activate.bat")) + full_envvars.save_ps1(Path(venv_folder, self._venv_path, "Activate.ps1")) + + # Generate the GitHub Action activation script + env_prefix = "Env:" if conanfile.settings.os == "Windows" else "" + activate_github_actions_buildenv = Template(r"""{% for var, value in envvars.items() %}echo "{{ var }}={{ value }}" >> ${{ env_prefix }}GITHUB_ENV +{% endfor %}""").render(envvars = full_envvars, env_prefix = env_prefix) return { str(Path(venv_folder, self._venv_path, f"activate_github_actions_env{self._script_ext}")): activate_github_actions_buildenv diff --git a/generators/VirtualPythonEnvResources/activate_github_actions_buildenv.jinja b/generators/VirtualPythonEnvResources/activate_github_actions_buildenv.jinja deleted file mode 100644 index 8150c31..0000000 --- a/generators/VirtualPythonEnvResources/activate_github_actions_buildenv.jinja +++ /dev/null @@ -1,2 +0,0 @@ -{% for var, value in envvars.items() %}echo "{{ var }}={{ value }}" >> ${{ env_prefix }}GITHUB_ENV -{% endfor %}