投稿

2013の投稿を表示しています

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 h

CGIHTTPServerでのトラブル

今回もPythonの話題です. Pythonは便利な言語で,CGIサーバーも簡単に扱うことができます. その辺の知識は全くなかったので, みんなのPython Webアプリ編 [みんなのシリーズ] を参考にしました. CGIサーバーの勉強中にPythonスクリプトを呼び出せないというエラーが起きたので,その対処法をメモ代わりに残しておきます.   ここで扱う問題は,Windowsでコーディングし,Linuxでの動作確認時に起きた問題です. CGIHTTPServerは,サーバーを起動したカレントディレクトリ上にあるcgi-bin内にあるPythonスクリプトを呼ぶことができます. このPythonスクリプトがうまく実行されないという問題につまづきました. 起きた現象は以下の2つです. ① プログラムが実行されずWebブラウザがスクリプトファイルをダウンロードする. ② プログラムが実行されず,スクリプトファイルの中身が表示される. ▶ 原因と解決方法 それぞれの原因と解決方法を示します. hoge.py:ここでは実行したいPythonスクリプトを表します. ①の原因 Pythonスクリプトに実行権限がないことが原因です. 実行させたいPythonスクリプトがあるディレクトリ(通常はcgi-bin)で,以下のコマンドを実行してみてください. $ ls -l そのときにの以下の様な結果が表示されます. -rw-rw-r-- 1 usr usr 553 12月  9 15:51 hoge.py 該当する実行したいスクリプトファイルの「-rw-rw-r--」の部分を見てください. ここの一番右が「x 」になっていない場合そのファイルに実行権限はありません. ①の解決方法 Pythonスクリプトに実行権限を与えれば解決です. 以下のコマンドを実行してください(hoge.pyは実行権限を与えたいスクリプトファイル名です). $ chmod 755 hoge.py  先ほどの「ls -l」で実行権限を確認します. すると以下のように右端が「x」に変わっているはずです. -rwxr-xr-x 1 hm hm 553 12月  9 15:51 hoge.py 以上で①の問題は解決され

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

Maker Faire Tokyo 2013

イメージ
  Maker Faire Tokyo 2013 に行ってきました。 Makeに行くのは久しぶりなのですが、今回も非常に楽しかったです。 色々楽しい作品が多かったのですが、気になったものをいくつか紹介します。 ・ BreadBoardManiac  ここでしか見たことない、フレキシブルなブレッドボード。 カッターで切って好きな大きさにして使えるらしい。  貫通型の非常に薄いブレッドボードはおしゃれだけど、どう使うのか悩みどころです。 多層の基板を構築することができるようですが、やったことないのでいまいちピンときません。 今後販売するようなので、ぜひ手にとって確かめてみたいです。 フレキシブルブレッドボード 貫通型ブレッドボード ・ kadecot  Web API付きのAndroidセンササーバ。 ECHONET Lite対応の家電を操作することができるらしい。  OpenECHOというJavaで書かれたECHONET Lite用のドライバライブラリをいじって、自分でECHONET Lite対応の機器を作ることもできるとのこと。  デモがマニアックだな―と思ったらSONYの研究所がやっている萌家電でしたよ。 写真のデモは空気中のエネルギーを集めて、美少女キャラが電気をつけてくれるというもの。 kadecot ・ スマポン  Android端末にガジェットを差し込むと、スクリプトを自動で流してくれるフレームワーク。 ガジェット内のスクリプトで色々なことを実現するので、スクリプト解釈用のアプリ以外は余計なアプリを入れなくて良いらしい。 らくらくホン使っている人や、鍵ガジェットがないとアクセスできないファイルをつくるなど、セキュリティーに使いたいそうです。  SL4Aで実装しているとのことですので自作のガジェットを作れそうです。 スマポン ・ 凸P  レゴを画面に差し込むと、ゲーム内の挙動が変わるという拡張現実的なゲーム。 インタラクティブなプロジェクションマッピングといった感じ。  自動で動くマリオを、プレイヤーがブロックを動かして操

pytextcheck

 お久しぶりです。 最近はブログではなく、別のWebページを作成に勤しんでいました。 私の記事を待ってくれている人がいたら、すみませんでした。 今回は pytextcheck というPythonから使用できるテキストチェッカーを作ったので紹介します。 このモジュールはテキスト形式の文書の中身を検索して、特定の語句を検出します。 Texで論文を書くために作成しました。 論文のように公開する文書内の語句には、いくつか規定があります。 例えば、ある学会では「行う」は「おこなう」、「。」は「.」と表記するといった決まりがあります。 文書を書いたあとに、1つずつ検索して禁止語句が含まれていないか探すのは大変面倒でした。 この前書いた論文では 208個も使用してはいけない漢字があり、とても検索する気が起きませんでした。 そこで、 今回紹介する、pytextcheckを書きました。 使い方は簡単で、以下のようにたった3行のコードで使用できます。 import pytextcheck t = Text() t.check_text('test.tex', 'basic.txt', 'sice.txt') ダウンロードと詳しい説明は ここ からお願いします。 サンプルではtest.tex内で、basic.txtとsice.txtに記述された語句を使用されているか調べます。 もし使用されていらば、該当する語句とそれが含まれる行番号を表示してくれます。 現状では、あまり文書のコンテキストを読む機能はありませんので、漢字があれば拾ってしまいます。 例えば、「~の時」は「~のとき」と表記しなけらばならないとします。 そこで、禁止語句リストに「時」を入れると、「時間」「時計」なども検出するということです。 回避方法をいくつか思いつきましたが、用途的には余計なことをしてfalse negative(偽陰性)を発生させるよりは、 false positive(偽陽性)は許容するということにしました。 このあたりの問題は、もう少し色々な人に使ってもらって検討したいと思います。  余談ですが、このモジュールを作成するにあたり、文字コードと改行コードには苦労しました。 改行コードは各OSで以下の

Python:matplotlibでScatterを使った2Dアニメーション

 お久しぶりです。 ブログお引越し後の一発目のネタが実はずっと前に書きかけだったネタです。 今日は matplotlib というPythonから使用出来るグラフ描画ライブラリを使用したのでそれについて書きます。 単純な内容であれば非常に簡単に使えるのですが、アニメーションのサンプルがわかりづらく、手間取ったのでメモ代わりです。 ほとんどのサンプルが乱数を使っており、挙動が理解しづらいため書き直して確認しました。 内容的には、Scatterという散布図を作成する機能で2Dアニメーションを行う方法について説明します。 XY平面に描画するサンプルを扱います。 1. 処理の流れ  ① 必要なモジュールのインポート  ② 描画準備(値の設定、画面の設定)  ③ アニメーションの設定  ④ コールバック関数の設定 という流れです。実際にはコールバック関数は最初に設定しています。 アニメーションでは設定したコールバック関数が一定間隔で呼び出されます。 そこに再描画用の設定をすることでアニメーションにすることができます。 2. ソースコード XY平面上にプロットされた点が移動するサンプルが以下のようなスクリプトになります。 import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np def _update_plot (i, fig, scat): scat.set_offsets(([0, i],[50, i],[100, i])) print ( 'Frames: %d' %i) return scat, fig = plt.figure() x = [0, 50, 100] y = [0, 0, 0] ax = fig.add_subplot(111) ax.grid( True , linestyle = '-', color = '0.75' ) ax.set_xlim([-50, 200]) ax.set_ylim([-50, 200]) scat = plt.scatter(x, y, c =