[CMake] Finding Python3

Eric Noulard eric.noulard at gmail.com
Sun Jul 18 18:47:54 EDT 2010


2010/7/18 Alan W. Irwin <irwin at beluga.phys.uvic.ca>:
[...]

> # Get the Python version.
>  execute_process(
>    COMMAND
>    ${PYTHON_EXECUTABLE} -c "import sys; print sys.version.split()[0]"
>    OUTPUT_VARIABLE PYTHON_version_output
>    OUTPUT_STRIP_TRAILING_WHITESPACE
>    )
>  SET(PYTHON_VERSION ${PYTHON_version_output} CACHE STRING "Python version")
>
> (We use this approach currently in PLplot.)  One caveat is the result of
> the above sometimes has trailing information that needs to be trimmed
> off.  For example, on my current system the result is "2.6.5+".

"import sys; print sys.version.split()[0]" will not work with python 3 because
print is a function:
http://docs.python.org/release/3.0.1/whatsnew/3.0.html

so you'd rather use:

"import sys; print(sys.version.split()[0])"

Now you can avoid the trailing informations if you use "sys.version_info"
instead of "sys.version".

On 2.6.5+ you get something like:

>>> print(sys.version_info)
(2, 6, 5, 'final', 0)

while on 3.1.x
>>> print (sys.version_info)
sys.version_info(major=3, minor=1, micro=2, releaselevel='final', serial=0)

using separate

sys.version_info[0]
sys.version_info[1]
sys.version_info[2]

should work both with python 2.[56].x and 3.x.y.

-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org


More information about the CMake mailing list