2017-10-24 5 views
1

今日はPythonの最初の日です。私はpyenvを使用してPythonのバージョンを処理しています。私は正常しかし、端末Pythonのshebangは、コンソールで使用されている同じパスとは異なるPythonバージョンを評価します

/usr/bin/env python 

で実行したときに今、私は

Python 3.6.3 (default, Oct 24 2017, 02:48:04) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 

期待される正しい応答を取得し、最新バージョン(3.6.3)をインストールし、

pyenv global 3.6.3 

でグローバルとして設定します私が持っている問題は、私のスクリプトファイルで使用しているシバンが同じ/usr/bin/env pythonパスを持っていますが、なぜプリインストールされたシステムのPythonバージョン2.7.6である。

私はこの

#!/usr/bin/env python 

import sys 
print("Content-type:text/html\r\n\r\n") 
print(sys.version) 

ようなスクリプトで使用されるバージョンをチェックし、どのような私は(Apache2のを使用して)、ブラウザによって印刷されますが、私はpyenvのコンフィグで遊んで、Apacheを再起動した

2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] 

でいますヒントはグーグルだが、成功はない。

ここに間違いがありますか?どうもありがとう!

+0

[この](HTTPS ://stackoverflow.com/questions/1534210/use-different-python-version-with-virtualenv/39713544#39713544)は、pyenvが3.6+ – Nae

答えて

1

pyenvは、ユーザごとにので使用するPythonバージョンを設定できます。

miszaのユーザーに3.6.3を設定すると、他のユーザー(www-dataなど)には影響しません。

ウェブサーバーは特別なユーザー(通常はwww-data)として実行される可能性が高いため、個人設定を変更しても、Apacheには何の影響もありません。 あなたスクリプトが#!/usr/bin/env pythonシェバングを使用するだけではないかもしれません。

は、私は実際にどのような場合でも、サーバーのようなものでpyenvを使用するのは悪いアイデアだと思う、と述べました。また、特定のPythonバージョンによって呼び出されることに頼っている唯一のものではないかもしれません(また、ほとんどのスクリプトは#!/usr/bin/env pythonで、実際はPython2.7スクリプトです)。

あなたが本当にあなたのスクリプトは、特定のPythonのバージョンで実行したいのであれば、あなたはシェバングにその特定のPythonのバージョンを使用する必要があります。

#!/usr/bin/env python3.7 

あるいは

#!/usr/bin/python3.8 
関連する問題