安装Python3后,sh和py运行

您所在的位置:网站首页 sys文件怎么安装 安装Python3后,sh和py运行

安装Python3后,sh和py运行

2023-01-13 21:37| 来源: 网络整理| 查看: 265

我制作了一个即使在没有python3的环境中也可以在安装python3之后执行的python文件。

计划

我想写python 如果您仍然写,我想用python3编写 如果你仍然写,我希望别人使用它 内部环境中的标准python是2.4(非常痛苦!)(没人在使用它!) 不可能100%告诉公司里的人"将其上传到python3并使用它!" 即使您编写用于上传到python3的sh,也将有两个文件,并且心理障碍也会增加(我认为)

然后,在执行它时,您必须应用自动更新以使其知道版本(也有一个文件)

假定在开发环境中几乎没有任何人可以root用户身份执行任何操作。

参考

如何在Perl,Python和Ruby脚本中编写正确的shebang 您可以写多个shebang! ??我搜寻了。 只是Don Pisha,没有这篇文章,我不会做这么愚蠢的事情。

如何编写可作为PHP执行的Ruby 这是一个不同的想法,但是我受到一个文件适用于多种语言的事实的启发。我也想尝试一下。

install_python3.py

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#!/bin/sh # -*- coding: UTF-8 -*- """:" # ここにshを書く # インストールバージョンと圧縮ファイルの設置&展開 tmp='/tmp/' pythonver='3.4.3' binarypath=$tmp'Python-'$pythonver # インストール先 lib='/usr/lib/' srcpath=$lib'python'$pythonver # python3のシンボリックリンク設置場所 bin='/usr/bin/' lnname='python3' if [ -f $bin$lnname ]; then     # python3があればそのままpython実行     echo 'インストール不要'     exec $lnname "$0" ${1+"$@"} fi echo 'インストール必要' if [ -f $binarypath'.tgz' ]; then     echo $binarypath'.tgz は既にあります' else     echo $binarypath'.tgz をダウンロードします'     wget https://www.python.org/ftp/python/${pythonver}/Python-${pythonver}.tgz -P ${tmp} fi if [ -d $binarypath ]; then     echo $binarypath' は既にあります' else     echo $binarypath' に展開します'     tar zxf $binarypath'.tgz' -C $tmp fi if [ -d $srcpath ]; then     echo $srcpath' へインストール済みです' else     echo $srcpath' へインストールします'     # cd すると後のpython実行でコケるので、インストール後に戻る     pwd=`pwd`     cd $binarypath && ./configure --prefix=${srcpath} && make && make install     cd $pwd fi if [ -f $bin$lnname ]; then     echo $bin$lnname'  設置済みです' else     echo $bin$lnname' を設置します'     ln -s $srcpath'/bin/python3' $bin$lnname fi exec $lnname "$0" ${1+"$@"} """ # ここからpython import sys version = sys.version_info if version[0] == 2:     print('2') else:     print(version[0])

首先,如果python的版本为2,我将python替换为3,但是我停止了它,因为它似乎会影响其他因素,实际上yum停止了工作。 下面的失败示例就是其中的一个残余。

失败例子

动态语言被翻译器逐行分析和执行,对吗? 那没问题的部分也可以吗?

当我正常使用它时,我总是意识到它不会发生,但是一旦我实现了目标,我认为它对我来说很方便。

我试图确定python中的版本并更新python

中的python

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#!/usr/bin/python # -*- coding: utf-8 -*- import sys import os import tarfile version = sys.version_info if version[0] == 2:     print 'バージョン2のため、3に更新します'     if not os.path.isfile('/tmp/Python-3.4.3.tgz'):         print 'ダウンロードします'         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 はすでに存在しています'     # 2.4なのでextractallはナイよー     if not os.path.isdir('/tmp/Python-3.4.3'):         print '/tmp/Python-3.4.3 に展開し、インストールします'         tf = tarfile.open('/tmp/Python-3.4.3.tgz', 'r')         tf.list()         for item in tf:             tf.extract(item, '/tmp/')         # ビルド         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.3 にインストール済みです'     else:         print '/tmp/Python-3.4.3 に展開済みです'     # /usr/bin/python の置き換え     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')         # 既存の/usr/bin/python2 がpython へのシンボリックリンクなので更新しておく         # 上書きはムリなので一回削除する         os.remove('/usr/bin/python2')         os.symlink('/usr/bin/python2.4', '/usr/bin/python2')     else:         print '/usr/lib/python は置き換え済みです'     sys.exit() # ここは3の場合に実行されるはず print('test')

python2时,print('test')是安全的,所以我认为"我可以走!",但是当我将其提高到3时,毕竟print是syntaxerror 经检查,似乎print和print()均可与python2一起使用... 我对自己的信念(承担责任)感到鼓舞

好吧,在我开始写作之前,我只是阅读了PHP运行时和编译时间,并意识到这是不可能的。

即使看起来像

php hoge.php,您在命令中指定源代码文件并直接执行它,现代解释器也会解析源代码,然后将其编译为虚拟机字节码。 Ruby,Python,Perl5,Emacs也是如此。

但是我只是认为无需在python2端使用print而保护syntax的python3仍然可以工作!

我没有使用它的计划。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3