Pythonの実行バージョンをスクリプト内で変更することは可能ですか?Pythonスクリプト内からPython実行バージョンを変更する
私はデフォルトでロードされるPython 2.6.6を持っています。このバージョンを3.6.0に変更したいのですが、それはスクリプト内のカスタムの場所(/ usr/binではなく)にインストールされています。スクリプトでは、sys.version
のPythonバージョンをチェックし、Python 3.6.0モジュールをスクリプトに読み込みます。実行環境に反映されていません。コードは次のとおりです。
import sys, os
pyVersion = int(sys.version.split(" ")[0].replace(".", ""))
exec(open(os.environ['MODULESHOME']+"/init/python.py").read())
if pyVersion < 360:
print("Python 3.6.0 version required")
print("Loading utils/python module")
module(['load', 'utils/python/3.6.0'])
module('li')
期待どおりのモジュールがリストされています。出力:私は次の行でPythonのバージョンを確認するとき
Python 3.6.0 version required
Loading utils/python module
Currently Loaded Modulefiles:
1) licenses 2) cliosoft/6.32.p3(default) 3)utils/python/3.6.0
は今、それはまだのpython 2.6.6
print(sys.version)
出力されます:
今2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)]
、どのように私は、Pythonを作ることができますモジュールをロードした後、すべてのコード行に3.6.0を使用するか?
注:スクリプトをロードする前にバージョンを変更できます。しかし、それは複数のユーザーによって使用され、私はrootアクセス権を持っていません。だから、すべてのバージョンを変更することはできません。そして、私はそれをこの方法でのみ行うことに興味があります。
「#!utils/python/3.6.0」のように、あなたのスクリプトに適切なシバン行を与えることができないのはなぜですか? –
私は別の場所にpythonをインストールしたので、この場所からbinとlibファイルを指す必要があります。私はこれを行うために環境モジュールを使用します。また、私はスクリプトでパスをハードコードしたくありません。 – Jarvis
Pythonのバージョンをチェックして、別のインタプリタでスクリプトを再実行するとどうなりますか?また、 'sys.version_info.major == 2:... 'のように、' sys.version_info'を使ってバージョンチェックを簡単にすることができると思います。 – TidB