Selbst in einer Umgebung, in der Python3 nicht enthalten ist, habe ich eine Python-Datei erstellt, die nach der Installation von Python3 ausgeführt werden kann.
Es wird davon ausgegangen, dass es unwahrscheinlich ist, dass irgendjemand etwas als Root in der Entwicklungsumgebung tun kann.
[Wie man korrekten Shebang in Perl-, Python- und Ruby-Skripten schreibt] Sie können mehr als einen Schebang schreiben! ?? Ich habe danach gesucht. Es war genau Don Pisha, und ohne diesen Artikel hätte ich so etwas Dummes nicht getan.
Wie schreibe ich Ruby, das auch als PHP ausgeführt werden kann Obwohl der Zweck anders ist, hat mich die Tatsache inspiriert, dass eine Datei mehrere Sprachen hat. Ich möchte das auch versuchen.
install_python3.py
#!/bin/sh
# -*- coding: UTF-8 -*-
""":"
#Schreiben Sie sh hier
#Installation und Dekomprimierung der Installationsversion und der komprimierten Datei
tmp='/tmp/'
pythonver='3.4.3'
binarypath=$tmp'Python-'$pythonver
#Installationsort
lib='/usr/lib/'
srcpath=$lib'python'$pythonver
#Installationsort für den symbolischen Python3-Link
bin='/usr/bin/'
lnname='python3'
if [ -f $bin$lnname ]; then
#Wenn Sie Python3 haben, führen Sie Python so aus, wie es ist
echo 'Keine Installation erforderlich'
exec $lnname "$0" ${1+"$@"}
fi
echo 'Installation erforderlich'
if [ -f $binarypath'.tgz' ]; then
echo $binarypath'.tgz existiert bereits'
else
echo $binarypath'.Laden Sie tgz herunter'
wget https://www.python.org/ftp/python/${pythonver}/Python-${pythonver}.tgz -P ${tmp}
fi
if [ -d $binarypath ]; then
echo $binarypath'Ist schon da'
else
echo $binarypath'Erweitern Sie auf'
tar zxf $binarypath'.tgz' -C $tmp
fi
if [ -d $srcpath ]; then
echo $srcpath'Installiert in'
else
echo $srcpath'Installieren auf'
#Wenn Sie eine CD erstellen, handelt es sich bei der späteren Python-Ausführung um Moos. Kehren Sie daher nach der Installation zurück
pwd=`pwd`
cd $binarypath && ./configure --prefix=${srcpath} && make && make install
cd $pwd
fi
if [ -f $bin$lnname ]; then
echo $bin$lnname'Bereits installiert'
else
echo $bin$lnname'Installieren'
ln -s $srcpath'/bin/python3' $bin$lnname
fi
exec $lnname "$0" ${1+"$@"}
"""
#Von hier aus Python
import sys
version = sys.version_info
if version[0] == 2:
print('2')
else:
print(version[0])
Zuerst, wenn die Version von "Python" 2 war, habe ich "Python" durch 3 ersetzt, aber ich habe es gestoppt, weil es andere Dinge zu beeinflussen schien und tatsächlich hat yum aufgehört zu arbeiten. Das folgende Beispiel für einen Fehler ist ein Überbleibsel davon.
** Wird die dynamische Sprache nicht Zeile für Zeile mit einem Dolmetscher analysiert und ausgeführt? ** ** ** ** Dann ist es okay, wenn Sie den problematischen Teil nicht durchgehen? ** ** **
Wenn ich es normal benutze, merke ich immer, dass es nicht passiert, aber sobald ich den Zweck erreicht habe, denke ich, dass es für mich bequem ist.
** Ich habe versucht, die Version in Python zu ermitteln und Python in Python zu aktualisieren **
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
import tarfile
version = sys.version_info
if version[0] == 2:
print 'Update auf 3 für Version 2'
if not os.path.isfile('/tmp/Python-3.4.3.tgz'):
print 'Herunterladen'
os.system('wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz -P /tmp')
else:
print '/tmp/Python-3.4.3.tgz existiert bereits'
# 2.Weil es 4 ist, extrahieren Sie alles ist schön
if not os.path.isdir('/tmp/Python-3.4.3'):
print '/tmp/Python-3.4.Erweitern Sie auf 3 und installieren Sie'
tf = tarfile.open('/tmp/Python-3.4.3.tgz', 'r')
tf.list()
for item in tf:
tf.extract(item, '/tmp/')
#Bauen
if not os.path.isdir('/usr/lib/python3.4.3'):
os.system('cd /tmp/Python-3.4.3/ && ./configure --prefix=/usr/lib/python3.4.3 && make && make install')
else:
print '/usr/lib/python3.4.Installiert am 3'
else:
print '/tmp/Python-3.4.Erweitert auf 3'
# /usr/bin/Python-Ersatz
if not os.path.isfile('/usr/bin/python.old'):
os.rename('/usr/bin/python', '/usr/bin/python.old')
os.symlink('/usr/lib/python3.4.3/bin/python3.4', '/usr/bin/python')
#Vorhandenen/usr/bin/python2 ist eine symbolische Verknüpfung zu Python. Aktualisieren Sie sie daher
#Das Überschreiben ist nicht zumutbar. Löschen Sie es daher einmal
os.remove('/usr/bin/python2')
os.symlink('/usr/bin/python2.4', '/usr/bin/python2')
else:
print '/usr/lib/Python wurde ersetzt'
sys.exit()
#Dies sollte im Fall von 3 erfolgen
print('test')
Zum Zeitpunkt von python2 war "print (" test ")" sicher, also dachte ich "Ich kann gehen!", Aber als ich es auf 3 erhöhte, war es schließlich "print" und "syntax error" Es scheint, dass sowohl "print" als auch "print ()" in Python2 verwendet werden können ... Ich wurde von meinem Glauben angespornt (Verantwortung weitergeben)
Nun, bevor ich anfing zu schreiben, las ich einfach PHP-Laufzeit und Kompilierungszeit und erkannte, dass es einfach unmöglich war.
php Auch wenn es so aussieht, als würde es die Quellcodedatei im Befehl angeben und direkt wie hoge.php ausführen, analysiert der moderne Interpreter den Quellcode und kompiliert ihn dann in den Bytecode der virtuellen Maschine. Ruby, Python, Perl5, Emacs ebenfalls.
** Aber ich dachte nur, dass python3, das auf der python2-Seite kein print
verwendet und syntax
beibehalten hat, immer noch funktioniert !? **.
Ich habe nicht vor, es zu benutzen.
Recommended Posts