rules_python icon indicating copy to clipboard operation
rules_python copied to clipboard

Add an option to opt-out of PYTHONSAFEPATH

Open allsey87 opened this issue 1 year ago • 13 comments

🚀 feature request

Relevant Rules

py_binary

Description

py_binary sets PYTHONSAFEPATH=1 which while being a sensible default does cause problems. Most notably, in rules_foreign_cc where py_binary is used to wrap up the Meson build system (written in Python). While this is not an issue for the build system itself, it is an issue when Meson runs compilers or build scripts that are written in Python. The issue here is that Meson is starting processes which inherit Meson's environment variables including PYTHONSAFEPATH. This often breaks scripts which rely on importing modules from the directory in which they are contained.

Describe the solution you'd like

I would like an option on py_binary that allows me to opt out of PYTHONSAFEPATH.

py_binary(
   name = "mypybinary",
   safe_path = False, # defaults to True
)

Describe alternatives you've considered

  • Using --action_env=PYTHONSAFEPATH=: no effect
  • Specifying the env argument on py_binary as follows: no effect
py_binary(
   name = "mypybinary",
   env = {
      "PYTHONSAFEPATH": ""
   }
)

allsey87 avatar Jul 12 '24 13:07 allsey87