Struct maturin::PythonInterpreter [−][src]
The location and version of an interpreter
Fields
major: usize
Python’s major version
minor: usize
Python’s minor version
abiflags: String
For linux and mac, this contains the value of the abiflags, e.g. “m” for python3.7m or “dm” for python3.6dm. Since python3.8, the value is empty. On windows, the value was always “”.
See PEP 261 and PEP 393 for details
target: Target
Currently just the value of [Target::os()], i.e. “windows”, “linux”, “macos” or “freebsd”
executable: PathBuf
Path to the python interpreter, e.g. /usr/bin/python3.6
Just the name of the binary in PATH does also work, e.g. python3.5
ext_suffix: Option<String>
Suffix to use for extension modules as given by sysconfig.
interpreter_kind: InterpreterKind
cpython or pypy
abi_tag: Option<String>
Part of sysconfig’s SOABI specifying {major}{minor}{abiflags}
Note that this always None
on windows
libs_dir: PathBuf
We need this value for windows abi3 linking
Implementations
impl PythonInterpreter
[src]
pub fn get_tag(&self, manylinux: &Manylinux, universal2: bool) -> String
[src]
Returns the supported python environment in the PEP 425 format used for the wheel filename: {python tag}-{abi tag}-{platform tag}
Don’t ask me why or how, this is just what setuptools uses so I’m also going to use
If abi3 is true, cpython wheels use the generic abi3 with the given version as minimum
pub fn get_library_name(&self, base: &str) -> String
[src]
Generates the correct suffix for shared libraries and adds it to the base name
For CPython, generate extensions as follows:
For python 3, there is PEP 3149, but that is only valid for 3.2 - 3.4. Since only 3.6+ is supported, the templates are adapted from the (also incorrect) release notes of CPython 3.5: https://docs.python.org/3/whatsnew/3.5.html#build-and-c-api-changes
Examples for 64-bit on CPython 3.6m: Linux: foobar.cpython-36m-x86_64-linux-gnu.so Windows: foobar.cp36-win_amd64.pyd Mac: foobar.cpython-36m-darwin.so FreeBSD: foobar.cpython-36m.so
For pypy3, we read sysconfig.get_config_var(“EXT_SUFFIX”).
The pypy3 value appears to be wrong for Windows: instead of e.g., “.pypy3-70-x86_64-linux-gnu.so”, it is just “.pyd”.
pub fn check_executable(
executable: impl AsRef<Path>,
target: &Target,
bridge: &BridgeModel
) -> Result<Option<PythonInterpreter>>
[src]
executable: impl AsRef<Path>,
target: &Target,
bridge: &BridgeModel
) -> Result<Option<PythonInterpreter>>
Checks whether the given command is a python interpreter and returns a PythonInterpreter if that is the case
pub fn find_all(
target: &Target,
bridge: &BridgeModel
) -> Result<Vec<PythonInterpreter>>
[src]
target: &Target,
bridge: &BridgeModel
) -> Result<Vec<PythonInterpreter>>
Tries to find all installed python versions using the heuristic for the given platform
pub fn check_executables(
executables: &[PathBuf],
target: &Target,
bridge: &BridgeModel
) -> Result<Vec<PythonInterpreter>>
[src]
executables: &[PathBuf],
target: &Target,
bridge: &BridgeModel
) -> Result<Vec<PythonInterpreter>>
Checks that given list of executables are all valid python intepreters, determines the abiflags and versions of those interpreters and returns them as PythonInterpreter
Trait Implementations
impl Clone for PythonInterpreter
[src]
fn clone(&self) -> PythonInterpreter
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for PythonInterpreter
[src]
impl Display for PythonInterpreter
[src]
impl Eq for PythonInterpreter
[src]
impl PartialEq<PythonInterpreter> for PythonInterpreter
[src]
fn eq(&self, other: &PythonInterpreter) -> bool
[src]
fn ne(&self, other: &PythonInterpreter) -> bool
[src]
impl StructuralEq for PythonInterpreter
[src]
impl StructuralPartialEq for PythonInterpreter
[src]
Auto Trait Implementations
impl RefUnwindSafe for PythonInterpreter
impl Send for PythonInterpreter
impl Sync for PythonInterpreter
impl Unpin for PythonInterpreter
impl UnwindSafe for PythonInterpreter
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
pub fn equivalent(&self, key: &K) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,