VS Codeでvenvがうまく動作しなくなった話

結論venvをあきらめて、Pipenvを導入すればなぜか解決した。
経緯Pythonの開発環境にVS Codeを使っていましたが、ある日突然、venvで作った環境が見えなくなりました。 PowerShellからは切り替えができるので、venv自体は正しく動いているようでした。 PythonとVS Codeをクリーンインストールしても状況は変わりませんでした[1]。
Pipenvの使い方最近はPipenvというものがあるらしいので、それを導入することとしました[2][3]。
pip install pipenv
以下のように環境変数を設定することで、プロジェクトのフォルダ直下に仮想環境を構築してくれます。 PIPENV_VENV_IN_PROJECT=true
VS Code上にフォルダを作成し、その直下で仮想環境を作成します。 コマンドはVS Code上のPowerShellで行いました。 例えば以下のようになります。パスやPythonのバージョンはご自身の環境に合わせてください。 *pythonの後に半角スペースがあるのでうっかり詰めないでください。 *venvファイルが作成されるという情報もありますが、私の場合はPipfileのみ作られました。
PS PS C:\Users\User Name\Documents\CODE\Python\Test> pipenv install --python 3.8
VS Code上でF1キーを押して、「reload」を検索して実行します。 これで左下のPythonのバージョンセレクトから環境選択できるはずです。
仮想環境から抜けるときは以下のコマンドを使います。
deactivate 参考文献[1] sota0726 「VScodeを完全にアンインストールする方法(windows10)「拡張機能のホストが予期せずに終了しました。」を改善するために」閲覧日:2020/09/13 https://www.atmarkit.co.jp/ait/articles/1810/12/news026.html
[2] KRiver1 「pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。」閲覧日:2020/09/13 https://qiita.com/KRiver1/items/c1788e616b77a9b…

C++11のためにGCCの最新版をインストールする

 
 最近The C++ Programming Language (4th Edition)を読んでいます.
これは最新のC++11に準拠した権威ある(分厚い)解説書です.
C++はちょとたしなむ程度でしたが,これを気に真面目に勉強してみようと思います.

 勉強のためにUbuntu上でC++11の開発を行えるよう環境設定をしましたので,その工程をまとめておきます.
想定している環境は以下のようになります.

OS
Ubuntu 12.04 LTS 32bit

GCC
4.8.1

参考にしたサイト
UbuntuHandbook


1.GCCとG++のバージョン確認


まずは現在の自分の環境を確認します.
・現在のGCCとG++のバージョンを確認します.
$ gcc --version
$ g++ --version 
 
私の環境では,以下のようになりました.
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

バージョンごとのC++11に対するサポートは以下のサイトをごらんください.
C++0x/C++11 Support in GCC

今回は4.8をインストールします.

2. GCCとG++のインストール


 update-alternativesを使用して元のGCCと最新のGCCを共存させます.

・Personal Package Archive(PPA)の追加します.
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test

・GCC 4.8とG++ 4.8をインストールします.
$ sudo apt-get update; sudo apt-get install gcc-4.8 g++-4.8

・GCC 4.8とG++ 4.8をupdate-alternativesに優先度20で登録します.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 

・元のGCC(4.X)をupdate-alternativesに優先度10で登録します.
ここでXは自分の環境に合わせて変更してください.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.X 10
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.X 10
・GCC 4.8とG++4.8が使用できるか確認します.
$ gcc --version
$ g++ --version

GCC4.8系列が表示されれば成功です.
gcc (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1
g++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1


3. 元のGCCにバージョンを戻す方法


 元のGCC/G++のバージョンに戻す方法を説明します.
これは,2章でGCC 4.8がバージョンに表示されない場合にも有効です.

・configから使用するGCCを選択し,変更する.

$ sudo update-alternatives --config gcc
$ sudo update-alternatives --config g++

selectionの番号を入力しEnterキーを押せば,使用するGCCを変更できます.


GCCのConfig





 
G++のConfig











4. サンプルを作成する


 開発環境が無事に準備できたか確認するために,適当なコードをコンパイルしてみましょう.

・test.cppを作成します.
適当なエディタ(emacsやgeditなど)で以下のコードを入力してください.

#include <iostream> 
#include <vector> 

int main() 
{
     int array[] {1, 2, 3, 4, 5};
     std::vector vec;

     for (int& i : array)
     {
         vec.push_back(i);
     }

     for (auto itr = vec.begin(); itr != vec.end(); ++itr)
     {
         std::cout << *itr << std::endl;
     }

     return 0;
}

・test.cppをコンパイルします.

$ g++ -std=c++11 test.cpp -o test

もし,G++4.6以下を使用しているのであれば,以下のコマンドでコンパイルしてください.

$ g++ -std=c++0x test.cpp -o test

無事にコンパイルでき,以下のようにコンソールに表示されれば成功です.

test.cppの実行結果







以上で,C++11の開発環境の設定は終わりとなります.

コメント

このブログの人気の投稿

MOCO'Sキッチンのフォントに似せるβ版

OpenCVでチェスボードの交点を検出する