mac - update python version




Come posso verificare quale versione di Python sta eseguendo il mio script? (12)

Come posso verificare quale versione dell'interprete Python sta interpretando il mio script?


Il modo più semplice

Basta digitare python nel tuo terminale e puoi vedere la versione seguente

desktop:~$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Se vuoi rilevare pre-Python 3 e non vuoi importare nulla ...

... puoi (ab) usare le modifiche dell'ambito di comprensione della lista e farlo in una singola espressione :

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)

Con six moduli, puoi farlo da:

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x

Controlla la versione di Python: python -V o python --version o apt-cache policy python

puoi anche eseguire whereis python per vedere quante versioni sono installate.


Diverse risposte suggeriscono già come interrogare la versione attuale di Python. Per verificare a livello di programmazione i requisiti della versione, utilizzerei uno dei seguenti due metodi:

# Method 1: (see krawyoti's answer)
import sys
assert(sys.version_info >= (2,6))

# Method 2: 
import platform
from distutils.version import StrictVersion 
assert(StrictVersion(platform.python_version()) >= "2.6")

Ecco una breve versione della riga di comando che si chiude immediatamente (utile per gli script e l'esecuzione automatica):

python -c "print(__import__('sys').version)"

O solo il maggiore, il minore e il micro:

python -c "print(__import__('sys').version_info[:1])" # (2,)
python -c "print(__import__('sys').version_info[:2])" # (2, 7)
python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)

Metti qualcosa come:

#!/usr/bin/env/python
import sys
if sys.version_info<(2,6,0):
  sys.stderr.write("You need python 2.6 or later to run this script\n")
  exit(1)

nella parte superiore del tuo script.

Si noti che, a seconda di cosa c'è nel proprio script, le versioni precedenti di python rispetto alla destinazione potrebbero non essere in grado di caricare anche lo script, quindi non saranno abbastanza lontano da riportare questo errore. Per ovviare al problema, puoi eseguire quanto sopra in uno script che importa lo script con il codice più moderno.



Questa informazione è disponibile nella stringa sys.version nel modulo sys :

>>> import sys

Leggibile dagli umani:

>>> print (sys.version) #parentheses necessary in python 3.       
2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

Per ulteriori elaborazioni:

>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192

Per garantire che uno script venga eseguito con un requisito di versione minimo dell'interprete Python, aggiungilo al tuo codice:

assert sys.version_info >= (2,5)

Questo confronta le informazioni sulla versione principale e secondaria. Aggiungi micro (= 0 , 1 , ecc.) E anche releaselevel (= 'alpha' , 'final' , ecc.) Alla tupla come preferisci. Si noti tuttavia che è quasi sempre meglio "anatra" controllare se una determinata funzione è presente, e in caso contrario, soluzione alternativa (o salvataggio). A volte le funzioni vanno via nelle versioni più recenti, sostituite da altre.


Se stai lavorando su linux basta dare l'output di comando python sarà come questo

Python 2.4.3 (# 1, Jun 11 2009, 14:09:37)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] su linux2

Digitare "help", "copyright", "credits" o "license" per ulteriori informazioni.



sys.version_info non sembra restituire una tuple partire da 3.7. Piuttosto, restituisce una classe speciale, quindi tutti gli esempi che usano le tuple non funzionano, almeno per me. Ecco l'output di una console python:

>>> import sys
>>> type(sys.version_info)
<class 'sys.version_info'>

Ho trovato che usare una combinazione di sys.version_info.major e sys.version_info.minor sembra essere sufficiente. Per esempio,...

import sys
if sys.version_info.major > 3:
    print('Upgrade to Python 3')
    exit(1)

controlla se stai usando Python 3. Puoi anche controllare versioni più specifiche con ...

import sys
ver = sys.version_info
if ver.major > 2:
    if ver.major == 3 and ver.minor <= 4:
        print('Upgrade to Python 3.5')
        exit(1)

può controllare se stai eseguendo almeno Python 3.5.





version