• 締切済み

python2および3が同居する環境について

Linux(ubuntu, あるはWindows10上のubuntu)ですが、意識しなくてもOSをインストールした時点でpythonが2.7になっていました。そこでanacondaでpython3.xをインストールしました。この時点で両方のpythonがあることになります。また、コマンドとしてはコマンド"python"で2.7, "python3"で3.xが呼び出されるようです。自分としてずっと3.xで行きたいのですが、"python"で2.7というところが嫌だなあと思っています。例えば"pip"で何かをインストールしてみるとどうも2.7の方に対して対応しているようです。”ようです”というところもあやふやなのですが。numpyなどもそうで、python3.xでpip install numpyとやってもimportできないと言ってきます。pipが2.7に対して適用されていると思います。 エイリアスでpython3をpythonとするだけでこのような混乱を避けることができるものでしょうか。 2.7を温存してpython3だけをデフォルトpythonとして使用する方法についてなにかありましたらお願いします。 また、2.7をバッサリ切り捨てる方法を教えて頂ければと思います。実はやったつもりなのですが、できていませんでした。アンインストールが一番クリアな方法にはなります。副作用がなければですが。コマンドとしてはsudo apu delete....とかsudo apt remove とかです。アンインストールの方法もよろしくお願いします。

  • Python
  • 回答数4
  • ありがとう数2

みんなの回答

回答No.4

> 老婆心ながら逆にpython2.7を呼び出したいときどうするんだろうと思いますが。それは必要に応じてOSが勝手にやってくれるでしょうから私が気にする必要はありませんが。 activateで何が変わるかというと、主に環境変数です。特に、PATHが変わって、OS標準のpythonのパスよりもanacondaのpythonのパスが先に記述されて、そちらが優先的に呼び出されるようになります。 バックグラウンドで実行される場合は、ユーザーが異なるかプロセスが異なることになり、PATHの設定が変更されていないので、pythonコマンドで実行されるのはpython2.7のほうになります。 activateした環境でpython2.7を使いたい場合は、python2コマンドを使うか、deactivateして環境変数を元に戻します。

回答No.3

> そこでどうしても質問が出てくるのですが、自分でコマンドを入力して仕事をするのではなく、ネット等からスクリプトなどをダウンロートして使用する場合、それを作成した人がpython3.xを使うつもりで"python", "python"を連発していた場合、呼び出されるのはその都度、python2.7であることは想像できます。そこには齟齬(スクリプト作成者の意図と私のPCの環境とに)が発生することになります。そういう問題ってないのでしょうか。 ありますね(笑)。間違いなくあります。 もっともpipやpip3で管理されてるスクリプトだとその限りじゃないですが、「野良」の場合はどっちにせよ信頼度は劣ります。 いずれにせよ、こっち側では、事実上、 「Python2 と Python3は全く別のソフトウェアである」 と認識せねばならない、って事です。そしてPython設計/開発者側の思惑と違って、Python2からPython3への「移行」はあまり上手く行ってないのです。 しかもバージョン違いがそのまま「ソフトウェアとしての違い」になってるんですね(後述)。そういう意味だとPythonはバージョンアップが失敗してるのは事実です。 「個人的に」Python2系を消去してPython3系にしたいのはわかりますが、結局、開発者側もPython2系に慣れきってスクリプトを記述してるので(しかもそれが普及してる)、Linuxのシステム周りでもいっこうに3系が普及せず、結果今のような状況になってるのです。 対策: 「今から学ぶなら」Python3だが、システム周りは「2系」に慣れきってる既存の開発者に任せておく。Python3は「普及してるPython(2系)」と「全く別のプログラミング言語」と割り切る事。 ところで、常用するスクリプトとして、はいざ知らず、開発の場合はどうすんのか、と言うと、Pythonは「おかしな逃げ道」を用意してます。 それが「仮想環境」と言われるモノですね。これで「どのPythonを使うのか」逐次指定できる。 「Python 開発 仮想環境」でググればいくらでも情報は見つかるでしょうから、「開発に際して簡単にバージョンを指定したい」場合、仮想環境を用いるのが面倒がないでしょう。 注: 言い方変えると、例えば同じ2系でも2.3と2.6は「同じコードを書いても動かず」、またあるスクリプトをリリースしても、「ユーザーが全員同じ環境を使ってる保証がない」状態で、開発側が「全環境で問題無く動くかどうか」テストせなアカン程「Pythonのバージョンはメンド臭い事になってて」、そのまま今まで来てる、と言う事を表しています。 一例として次のリンクを貼っておきます。 pyenvの使い方とインストール : https://www.python-izm.com/tips/pyenv/ 画像: 例としてこちらが使ってるXubuntuに入ってるPythonを表示したモノ。 この段階で、 ・Python2.7 ・Python3.5 ・Python3.6 ・Python3.7 と実は「4種類も」入ってる。当然自分で入れたわけでもなく(筈?)「所々のスクリプトないしはソフトウェア」が要求したバージョンのPythonが別々にシステムにインストールされてこういう状況になってる。 そして、これが示してる事は「同じ3系のPythonでも」重複しなきゃいけない程、細かいところでは「非互換性がある」と言う事を表していて、Pythonの「バージョンアップデート」と言うのはある意味全く信用出来ない。 なお、pip3で何かインストールする場合、システムが中心的に(Python3系では使用されてる)Python3.6対象になってて、実は最新のPython3.7(あるいは古い3.5)には反映されない、とか言うクソな状況も形作ってもいる。 色々このテのメンド臭い事を避けるには python(バージョン番号) -m pip3 install パッケージ名 として「どのPythonを対象にするのか」小数点以下で明言する。 しかし、この辺の諸々が面倒くさければ、やっぱり仮想環境を構築するのがマシなような気がする。

回答No.2

#1 氏も仰ってる通り、Python2.7はLinuxではシステム周りに使われてる大事な処理系なんで、削除しない方が良いです。削除したらシステムがぶっ壊れる確率が高いんで、おかしな事をするのは止めましょう。 ちなみにPython3でpipを使う場合、pipじゃなくってpip3を使用すれば良いです。

skmsk1941093
質問者

お礼

回答ありがとうございます。python2.7は温存するとします(実際に消そうとしたのですが消えなかったです。消すだけのテクが無かったのもあると思いますが)。そこでどうしても質問が出てくるのですが、自分でコマンドを入力して仕事をするのではなく、ネット等からスクリプトなどをダウンロートして使用する場合、それを作成した人がpython3.xを使うつもりで"python", "python"を連発していた場合、呼び出されるのはその都度、python2.7であることは想像できます。そこには齟齬(スクリプト作成者の意図と私のPCの環境とに)が発生することになります。そういう問題ってないのでしょうか。それともpython3.xを利用する人は”python”ではなく、かならず”python3”を明示するようになっているのでしょうか。”pip”ではなく”pip3”を使えばよいということですが。自分自身がキー入力するときのことですね。 あるいは、例えば、”python”と入力すればpython3.xを呼び出すようにエイリアスしておけばいいということはあるのでしょうか。そうすると"python"というスクリプトとか入力はすべてpython3.xと解釈されるということになるのかなと思いますが。違うでしょうか。

回答No.1

anacondaでインストールしたのであれば、activateを実行すればpythonコマンドでanacondaのpythonが起動されるようになるはずです。 システムに元々入っているpython2.7は、それを前提に作られているコマンドがあるので、削除しないほうがいいです。 ユーザーの環境だけ切り替えるようにすれば、最初にactivateが必要な手間はありますが、他の問題は起こらないはずです。

skmsk1941093
質問者

お礼

回答ありがとうございます。インストールするだけでなくactivateする必要があるということですか。それがなされると、"python"としたらpython2.7ではなく、python3.xが呼び出されるということですね。(老婆心ながら逆にpython2.7を呼び出したいときどうするんだろうと思いますが。それは必要に応じてOSが勝手にやってくれるでしょうから私が気にする必要はありませんが。) 最近のanacondaのインストールはanaconda...shというファイルを入手してbash anaconda....shと入力するらしいですね。これでactivateもしたことになるのかなと思いますが。sudo bash anaconda..shではないところもそんなもんかなと思います。

関連するQ&A

  • python 3.8のインストールとその後について

    Windows10でpython3.8をインストールしたのですが、マイクロソフトストアからのインストールになってしまいました。今まではanaconda3のインストールを定型的にやっていてanacondaのプロンプトとかjupyter notebookもその範囲でできたのですが、マイクロソフトストアからpython3.8をインストールした後、どのようなコマンドになるのでしょうか。 Powershellでpythonと入力すると、それがない場合、ダウンロードサイトを紹介されてそこから取り寄せてインストールすることになります。まるでubuntuですが。でもその後が続かないことに気づき、アンインストールするかと思ったのですが、3.8の最新のもののようなのでそれをベースに考えたいのですが。 いつもインストールに使っているのは以下のサイトなのですが。 https://www.anaconda.com/distribution/

  • Windows10へのPythonのインストール

    Win10にPythonをインストールする手順はいろいろありますが、Anacondaからインストールするとスタートにアイコンができるのでjupyter notebookが起動できますが、マイクロソフトストアからのものだとjupyterが起動できないようです(アイコンがないから方法が不明)。Anacondaでない方のpythonでjupyter notebookを使えるようにするにはどうしたらいいでしょうか。 Anacondaでインストールすると、専用のコマンド、パワーシェルができます。それとはちがう普通のパワーシェルだとpythonコマンドを投入すると、マイクロソフトストアが出てきてそちらのpythonのインストールに向かうことがあります。その方向にうっかり進むとpythonのインストールが開始され、2つのpythonの環境ができてしまいます。 これはやはりまずいのではないかと思います。 一度、2つのpythonをクリーンにアンインストールしてしまうのがいいと思いますが、1つ1つアンインストールしていくしかないでしょうか。環境がスパゲッティのように絡んでしまってクリーンにアンインストールできるのかなと思うのですが。 powerシェルからpythonコマンドを投入すると細々としたエラーメッセージが出てくる(pythonの機能は一応使えるようにはなるみたいですが)のでクリーンアンインストールしたいと思っています。 よろしくお願いします。

  • Pythonの環境について

    Pythonの環境を整える際にpytorchがあります。私はてっきりanacondaとpytorchはお互いがそれぞれ別々に作り上げる環境であり、どっちがいいか思案する図式のものだと思っていました。私はanacondaでやっていました。ところが、pytorchのインストールプロセスを見るとanacondaのシェルからcondaコマンドを通してpytorchをインストールするということなので上記の位置づけが間違っているとわかりました。anacondaの中にpytorchがあるという形式だからです。また import torchを宣言してコードを進めていくようですが、import condaというものはないですね。pytorchはどのようなものだと考えたらいいでしょうか。よろしくお願いします。

  • Python が勉強しにくい

    Python の勉強を始めた。 多少のルールが他の言語と違うところがある。これは当然のことと思う。   例 {} がない インデントによる分岐等 もっと困ったのは、python.exe がプロジェクトの毎に埋め込まれてしまうことだ。 そのため PyCharm を利用すると、Configuration で それぞれの exe 設定をしなければならないことが最近分かってきた。 また、開発内容によっては、Anaconda を推奨しているものがあり、これを インストールすると、この中にも python.exe のみならず、関連ライブラリを インストールする。 また、Anaconda は、単体python.exe と相性が悪く pip などは推奨されていない。 conda を利用するようになっている。 その他、 Google Coraboratory, Jupiter Notebook を推奨するものもあり、選択に戸惑う。 いろいろとやっているうちに混乱が広がって、ますますわかりにくくなってしまう。 どのように対応するのがよいのだろうか? 初歩の勉強を行うとしてどのツールを利用するのがよいのでしょうか?

  • Pythonのライブラリとかのバージョンについて

    Pythonは本体、numpy, scipy, pandas, StatModels, Matplolib, Seaborn, Scikit-learn, tensolflowなどのライブラリ、pipなどのコマンドまで含めてバージョンがいろいろあると思います(pipを使って何かインストールしたらそれは古いと指摘される)。そこで動作が思わしくないとき、バージョンの齟齬があるものでしょうか。本体は2.7,3.x間で大きな違いがあるのは周知のことですが。本やネット情報って本体・ライブラリの最新バージョンと比べてやや遅れていることが多いのでコピペとかしても動作しないみたいなのでお尋ねしました。どうでしょうか。具体的な問題は別にあるのですが、概ねどうなのかなと思いますが。  また、コードの動作とは関係ないコメントについても漢字コードがチェックされるのでしょうか。コメントの漢字コードが指定されていないというメッセージで動作が止まるようです。よろしくお願いします。

  • Pythonを用いた自然言語処理について

    Pythonで形態素分析をしようと思っているのですが、私は現在condaを使用しており、形態素分析で使用するjanomeというライブラリはpipでしか使用できないようです。私のPythonでpipコマンドを使用したところできませんでした。condaとpipを切り替える方法を教えていただけませんか?もしくはcondaでも形態素分析ができる方法はありませんか?

  • Pythonライブラリパッケージが使えない

    私のパソコンはWindowsのSurface7プラスです。 Pythonでnumpyやmatplotlibを使うためにコマンドプロンプトでインストールしてみて、Pythonで実行しても モジュールがない というエラーが出て、使えません。参考書によると、python 以外の言語で書かれたものの場合、その言語のコンパイルが必要で、コンパイル済みのパッケージのインストールがいると書いてあります。 ここからが質問です。これを私が実行してないことが、原因なんでしょうか。またコンパイル済みのパッケージの取得方法もややこしくて分かりません。どこのサイトにいけばいいのでしょうか。 どなたか回答よろしくお願いします。

  • Ubuntuで自動関連付けをするには?

    Ubuntu 12.04 LTS 64bit を最小構成でインストールし、 sudo aptitude install --without-recommends xorg-server lxde lxdm python-software-properties をして、 sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install wine1.5 をして試しにexeでも動かしてみようと思ったら、何で開くか聞かれたので、wineとあったところをあたってみたのですが動きません。 また、java7をインストールして、jarファイルを実行しようと思ったら、またどれをあたっても動きません。 32bitでもダメでした。 Ubuntu,Lubuntu,Ecolinux等では自動的に割り当てられていて、ダブルクリックだけで開きます。 長くなってしまいましたが、どうすれば自動的に関連付けがされるようになるのでしょうか また、リストに載っていない物の関連付けはどうすればようでしょうか 解答よろしくお願いします。

  • python-devがインストールできません

    VMWARE上のUbuntuでpython環境を作りたいのですが、sudo apt-get install python-dev とコマンドを打ってもインストールできなくて困っています。Pythonのversionは2.7.4、Ubuntuは13.04です。 404 Not Foundとあるのですインターネット接続かと思い、色々と調べたのですが問題なさそうです。 実際、VMWARE上でもfirefoxでインターネット接続は普通にできております。 困っているので助言の方よろしくお願いいたします。 以下エラーメッセージ: エラー http://jp.archive.ubuntu.com/ubuntu/ raring/main libexpat1-dev i386 2.1.0-2 404 Not Found エラー http://jp.archive.ubuntu.com/ubuntu/ raring-updates/main libpython2.7-dev i386 2.7.4-2ubuntu3.2 404 Not Found エラー http://jp.archive.ubuntu.com/ubuntu/ raring/main libpython-dev i386 2.7.4-0ubuntu1 404 Not Found エラー http://jp.archive.ubuntu.com/ubuntu/ raring/main python-dev i386 2.7.4-0ubuntu1 404 Not Found エラー http://security.ubuntu.com/ubuntu/ raring-security/main libpython2.7-dev i386 2.7.4-2ubuntu3.2 404 Not Found [IP: 91.189.88.153 80] エラー http://security.ubuntu.com/ubuntu/ raring-security/main python2.7-dev i386 2.7.4-2ubuntu3.2 404 Not Found [IP: 91.189.88.153 80] http://jp.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-2_i386.deb の取得に失敗しました 404 Not Found http://security.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.4-2ubuntu3.2_i386.deb の取得に失敗しました 404 Not Found [IP: 91.189.88.153 80] http://jp.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.4-0ubuntu1_i386.deb の取得に失敗しました 404 Not Found http://security.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.4-2ubuntu3.2_i386.deb の取得に失敗しました 404 Not Found [IP: 91.189.88.153 80] http://jp.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.4-0ubuntu1_i386.deb の取得に失敗しました 404 Not Found E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。

  • 何がアップグレートされるのか

    $ sudo apt-get update $ sudo apt-get upgrade 上記のコマンドでアップグレードされるのは、 ①OS ②インストールしているアプリ ③OSとアプリ どれなんでしょうか? ubuntu20.04LTSを使用しています。 よろしくおねがいします。