Domanda:
Abbiamo bisogno di più versioni di Python?
SteveIrwin
2012-10-10 03:06:10 UTC
view on stackexchange narkive permalink

Sono nuovo di Linux e passando attraverso la mia cartella installata vedo che ci sono quattro diverse cartelle Python nell'elenco delle directory.

pythonpython2.7python3python3.2

Abbiamo bisogno di tutte e quattro le versioni o dovrei rimuovere le altre e mantenere solo l'ultima?

Inoltre, le versioni precedenti non vengono rimosse automaticamente quando vengono installate versioni più recenti come in Windows?

Quale distro e qual è il percorso? Alcune applicazioni dipendono ancora da `python2.7` quindi fai attenzione a cancellarlo.
Sto usando Debian e il percorso è / etc
"/ etc" non è il percorso di installazione delle applicazioni. È dove viene memorizzata la configurazione. Non scherzare con la roba lì dentro.
Uno dei motivi per le versioni multiple è che la versione 3 ha introdotto alcune modifiche non compatibili con le versioni precedenti e ha interrotto alcune funzionalità esistenti.
Voglio rimuoverlo perché occupa molto spazio sulle schede SD e sui backup. Uno di questi giorni imposterò un sistema sacrificale e lo rimuoverò solo per vedere la differenza nell'utilizzo dello spazio e se rompe o meno qualcosa.
@SDsolar Rompere le cose; puoi vedere cosa eseguendo `aptitude` ed eseguendo una cancellazione (simulata!) trovando` python` e premendo `-`.
Quattro risposte:
#1
+8
scruss
2012-10-10 05:03:12 UTC
view on stackexchange narkive permalink

Se guardi in / usr / bin , in realtà ci sono solo due versioni installate:

  $ ls -la / usr / bin / python * lrwxrwxrwx 1 root root 9 giugno 5 23:08 / usr / bin / python -> python2.7-rwxr-xr-x 1 root root 2679344 maggio 6 19:31 /usr/bin/python2.7lrwxrwxrwx 1 root root 9 agosto 2 18: 04 / usr / bin / python3 -> python3.2lrwxrwxrwx 1 root root 11 Jul 6 09:52 /usr/bin/python3.2 -> python3.2mu-rwxr-xr-x 1 root root 2612900 Jul 6 09:52 / usr / bin / python3.2mulrwxrwxrwx 1 root root 11 ago 2 18:04 / usr / bin / python3mu -> python3.2mu  

Le voci contrassegnate con l all'inizio sono collegamenti; sono solo puntatori a file eseguibili.

Come è già stato detto, hai bisogno di entrambe le versioni e non fare confusione con le cose lì dentro ...

Qual è il `mu` su` python3.2mu`?
@AlexChamberlain - Secondo [pep-3149] (http://www.python.org/dev/peps/pep-3149/) la `m` mostra che è stata compilata con il flag` --with-pymalloc`, mentre la `u` mostra che è stata compilata con il flag` --with-wide-unicode`.
@scruss - Per completezza, potresti menzionare che le voci "l" sono [link simbolici] (http://en.wikipedia.org/wiki/Symbolic_link).
@MarkBooth, sì, l'ho detto nella risposta originale
No, risposta originale 10 ottobre 12 alle 0:03, il mio commento era alle 9:37 e la tua modifica era alle 11:33. Avresti potuto semplicemente contrassegnare il mio commento come obsoleto.
#2
+3
Krzysztof Adamski
2012-10-10 11:00:54 UTC
view on stackexchange narkive permalink

Python 3 è un aggiornamento incompatibile con le versioni precedenti del linguaggio. Come già accennato, è stato cambiato così tanto che la maggior parte dei programmi non funzionerà su Python 3 senza modifiche. Ancora peggio, molte librerie Python non sono ancora compatibili con Python 3.

Questo è il motivo per cui sono necessarie almeno due versioni: la precedente Python 2.x e la nuova Python 3.x. Questo è esattamente quello che hai sui sistemi Debian. Hai 4 diversi percorsi che puoi usare per eseguire Python:

  • python2.7 - è la versione 2.7 di Python, l'ultima versione della linea 2.x.
  • python3.2 - è la versione 3.2 di Python, l'ultima versione della linea 3.x disponibile in Debian (3.3 non è ancora disponibile).
  • python : è un interprete Python predefinito. È un collegamento simbolico a una versione considerata predefinita. Al momento, in Debian, è ancora Python 2 quindi punta a 2.7.
  • python3 - è l'interprete Python 3 più aggiornato disponibile in Debian. Attualmente si collega simbolicamente a una versione 3.2 di interprete.

Conclusione

Molti pacchetti dipendono da Python 2.x quindi non dovresti rimuoverlo. Potrebbero esserci alcuni pacchetti che dipendono da Python 3.x, quindi probabilmente non vorrai rimuovere anche questo.

So che è vero per Python 2.7 ma non sono a conoscenza di nulla che fallisca se Python 3 viene rimosso. Sento che sta arrivando un esperimento. Sarebbe bello avere backup rsync completi più piccoli, se possibile.
#3
+2
John La Rooy
2012-10-10 07:27:13 UTC
view on stackexchange narkive permalink

Python3 non è realmente un aggiornamento di Python2. Solo i programmi banali verranno eseguiti senza almeno essere eseguiti tramite 2to3.

D'altra parte, quando ci sono aggiornamenti minori, ad esempio 2.7.2 -> 2.7.3, il 2.7 verrà aggiornato alla nuova versione e quello più vecchio viene eliminato. Questo è generalmente ok in quanto non dovrebbero esserci modifiche incompatibili all'indietro (non dirò che questo non è mai successo però)

Di solito non vedrai che 3.3 viene aggiunto al repository tra i rilasci, ma quando si presenta e si aggiorna, la 3.2 rimarrà installata nel caso si dipendesse da quella specifica versione. Il codice Python puro che gira su 3.2 dovrebbe essere per lo più ok su 3.3, ma le librerie C potrebbero non funzionare senza essere ricostruite.

#4
  0
SDsolar
2017-08-17 05:48:56 UTC
view on stackexchange narkive permalink

La risposta all'ultima parte della tua domanda, "Inoltre, le versioni precedenti non vengono rimosse automaticamente quando vengono installate versioni più recenti come in Windows?"

La risposta è un chiaro ed enfatico No.

Le versioni precedenti non vengono rimosse quando vengono installate nuove versioni.

Troppo del nostro ecosistema software è stato costruito su Python 2.x perché sia ​​sacrificabile. Rimuoverlo romperebbe molti dei nostri comandi.

Inoltre, Python 3 offre ben poco di attraente per il programmatore Python 2.7. Se ritieni di aver bisogno di queste funzionalità, hai la possibilità di utilizzare Python3. In caso contrario, le persone come me rimarranno con Python 2.x

Come è stato menzionato nelle altre risposte, non sono più la stessa lingua.

È come la differenza tra programmi che potevano funzionare con Windows 98 ma non potevano funzionare su Windows 2000. I programmi che utilizzavi sotto Win98 dovevano essere ripubblicati dopo essere stati compilati per il 2000 ( 32 bit). Windows 2000 non si è diffuso nel mercato consumer perché avrebbe costretto quei consumatori a dover acquistare nuovamente i loro prodotti preferiti. Solo con Windows XP riuscirono finalmente a far sì che i programmi di entrambi i tipi potessero essere eseguiti sullo stesso sistema operativo Windows. Siamo fortunati che Microsoft abbia imparato da quella lezione e che i programmi a 32 bit e 64 bit possono essere eseguiti su qualsiasi versione moderna di Windows.

Tornando alla domanda nel titolo, "Abbiamo bisogno di più versioni di Python?" - dipende da quale software vuoi essere in grado di utilizzare. Un esempio straordinario è il flightgear. Senza Python3 non funzionerà.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...