Sh und py werden nach der Installation von Python3 ausgeführt

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.

Planen

Es wird davon ausgegangen, dass es unwahrscheinlich ist, dass irgendjemand etwas als Root in der Entwicklungsumgebung tun kann.

Referenz

[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.

Code

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.

Fehlerbeispiel

** 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

Sh und py werden nach der Installation von Python3 ausgeführt
Informationen zur Installation der Serien Pwntools und Python2
Python installieren 3.4.3.
[Anfänger] Python installieren und Programme ausführen (Windows)
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Nach der Installation von Linux
Schreiben wir ein Python-Programm und führen es aus
[Hinweis] Installieren von Python 3.6 + α unter Windows und RHEL
Was sind Python Taples und * Args?
Wenn Sie versuchen, Python2 pip nach der Installation von Python3 pip zu installieren, wird dies abgelehnt
Der Prozess der Installation von Atom und der Ausführung von Python
Installieren von Python 3 auf einem Mac und Überprüfen der Grundfunktionen Teil 1
Python- und Numpy-Tipps
[Python] Pip und Wheel
Führen Sie Python mit VBA aus
Führen Sie prepDE.py mit python3 aus
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Ruby, Python und Map
Führen Sie Python aus Excel aus
Führen Sie Blender mit Python aus
Pandas auf python2.6 installieren
Python-Eingabe und Ausgabe
Python und Ruby teilen sich
Cloud Run Tutorial (Python)
Python asyncio und ContextVar
Führen Sie iperf mit Python aus
Entfernen Sie Leerzeichen in voller Breite vor und nach der Zeichenfolge (Python).
[Python-Anfänger] Wie entwickle und führe ich Python schließlich aus?
Die Python 3.4-Serie ist sicher für die Installation und Ausführung von Python Kivy (macOS).
Führen Sie die Python-Datei aus, nachdem Sie die virtuelle Python-Umgebung mit der Batch-Datei aktiviert haben