pyo3 icon indicating copy to clipboard operation
pyo3 copied to clipboard

Expose a way to access the `PYO3_CONFIG_FILE` values

Open davidhewitt opened this issue 3 years ago • 2 comments
trafficstars

Some users have specific use cases where they would benefit from being able to access the PYO3_CONFIG_FILE values in some form from the pyo3 crate.

I generally wouldn't advise this, as a lot of these config files (such as library path) are unique to the build environment so wouldn't have any useful meaning in binaries intended to be deployed on other systems.

See original comment from #2000 below.

If anyone has need for this, I'm happy to help review designs and implementation.


It would be nice to have access to the library path from PYO3_CONFIG (or all values) but that is not a problem for me.

E.g. it could be based off the PYO3_CONFIG build mechanism - maybe we could have pyo3_config_var!("lib_path"). Or maybe just pyo3_lib_path!(). I'm open to hearing ideas on what's better.

An alternative could be a module filled with many const values, similar to what built does.

Originally posted by @jonasbb in https://github.com/PyO3/pyo3/issues/2000#issuecomment-979985994

davidhewitt avatar Nov 29 '21 18:11 davidhewitt

This seems related to the request here https://github.com/pyca/cryptography/pull/6695#discussion_r767289574 as well?

@messense can correct me but it seems they want to compile another static lib with the same version of Python PyO3 is using as part of a build script.

The other piece missing there is that the include path is not part of the pyo3_build_config::InterpreterConfig. It seems weird to add that if pyo3 itself doesn't use it, but I can come up with some alternative ideas:

  1. expose run_python_script (or implement it on InterpreterConfig), which is right now duplicated in that build.rs
  2. create something like Sysconfigdata::from_interpreter_config

aganders3 avatar Jan 03 '22 20:01 aganders3

What we want in pyca/cryptography#6695 are:

  1. A way to get the currently detected Python interpreter for running a Python script file and determining the interpreter kind for example disable ABI3 if it's PyPy.
  2. Get Python include file path from sysconfig

An InterpreterConfig with a run_python_script method sounds reasonable to me.

messense avatar Jan 05 '22 04:01 messense