投稿

8月, 2012の投稿を表示しています

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

Python:PILをWindows7 64bit環境で使う

こんにちは。もう9月だというのにまだまだ暑いですね。  今回はPythonを使用していてハマったエラーの対処法を載せておきます。 Pythonにおいて画像を処理しよとするとよく用いられるのが、PIL(Python Imaging Library )です。 [参考] Python Imaging Library (PIL) : http://www.pythonware.com/products/pil/ このライブラリを使うと簡単に画像処理ができます。 具体的にはPNG画像を表示するためにPILを使用したいと考えました。 しかし、ライブラリをインストール後以下の様なエラーメッセージが表示され、正常に動作しません。 ImportError: The _imaging C module is not installed モジュールをインストールしたはずなのに見つからないようです。 *インストールはインストーラではなく手動で行いました このエラーメッセージを頼りに検索していくと、Windowsの64bit環境において起きるということがわかりました。 [参考] 流れ着いたら。。 。:http://www.flotsam-fareast.com/2011/02/64bit-windows-python-image-library-20110212.html そこで、以下のサイトから64bit用のPILのインストーラをダウンロードしてインストールしました。 Unofficial Windows Binaries for Python Extension Packages :http://www.lfd.uci.edu/~gohlke/pythonlibs/ しかし、インストラーを起動すると以下の様なメッセージが表示され、それ以上進めなくなりました。 Python version 2.* is required, which was not found in the registry PILを手動でインストールしなければその時点で発生したエラーだと思います。 そこで対処法を調べると、レジストリを読み間違えているということがわかりました。 [参考] Yamada Program :http://yamada-program.blogspot.jp/2011/05/pythonset

Python:super()の謎エラー

こんばんは。最近健康面に不安を感じ、大学近くのジムに通い始めました。 大学に入る前より15キロ太ったので、なんとかそのときの体重に戻したいです。  さて、最近Pythonにはまっております。 [参考] 日本Pythonユーザ会 :http://www.python.jp/Zope Pythonは非常に開発がやりやすいうえ、WindowsだろうがLinuxだろうが同じコードで動いてくれるのが研究でも趣味でも役に立ちます。 特にお気に入りなのは、対話型シェルを使用して一行ずつプログラムを書ける点です。 これを使えば、使い方の分からないメソッドをその場でテストしたり、自作関数の動作テストも容易に出来ます。  また豊富な機能を実現するモジュールが数多く存在するのが素晴らしいです。 例としてTkinterというGUI製作用のモジュールが存在します。 [参考] Tkinter 8.4 reference: a GUI for Python :http://infohost.nmt.edu/tcc/help/pubs/tkinter/ PythonをWindowsにインストールしたときに標準でついてくるIDLEは、Tkinterで製作されているようです。 Tkinterの使い方は日本語のサイトはいつかあるようですが、紫藤さんのWebページを参考にさせていただきました。 [参考] 紫藤のページ :http://www.shido.info/py/index.html  今回はそのときに真っ先にハマった内容を備忘録を兼ねて書きます。 参考にしたサンプル の内容としてはWidgetを配置する簡単なものです。 その際の初期化を再現すると以下の様になります。 class Son(Parent):     def __init__(self):         Parent.Frame.__init__(self) 直接、親クラスの初期化メソッドを呼んでいました。 しかし、Python(2.x系列)では、 super(クラス名, self).メソッド(…) と書けば親クラスのメソッドを呼べるのに、なぜそうしないのか気になりました。 そこで、実際にsuperを使用して記述しなおしました。 class Son(Parent):     def __init__(self):        

苺サーボでヒューマノイドを作る その2

イメージ
こんばんは。 そろそろ世間は夏休みでしょうか? 電車で親子連れや子供をよく見ます。 前回の実験 にサーボモータを7つ追加して再実験しました。 今回も以下の項目を調べます。  ・トルク  ・消費電流  ・消費電力 実験に使用したサーボは以下の8つです。すべてシリアル(コマンド)サーボとなっています。 選定基準は手元に合ったものや、借りられたものです。 ・Pirkus PRS-DE07MS PRS-S40M ・Futaba RS301CR-H3b RS405CB ・KONDO KRS-6003HV ICS KRS-4033HV ICS KRS-4034HV ICS KRS-2552RHV ICS 実験の詳細や様子は以下の動画を御覧ください。 実験結果として、およその値ですが以下のようになりました。 *この値はこちらの実験環境による結果なので参考程度に留めてください。  実験結果を眺めるとRS-DE07MS以外は、公称値のトルクより低く出ました。 どのように公証トルクを算出しているのかわからないのでなんとも言えませんが、実験機材の都合として3 [kg]までしか計測できないので200 [mm]という長いアームのせいでうまくトルクが伝達していないのかもしれません。 しかし、実際にはロボットに組み込むので損失は絶対に発生します。 そいう意味ではそのへんも考慮しながら結果を眺めるといいかもしれません。  消費電流はKRS-4034HVが出力トルクを考えると群を抜いて低いです。すごくエコみたいです。 また、本実験の動画にない注意としてサーボモータが全て新品というわけではありません。 RS301CR、KRS-6003HV、KRS-4033HV、KRS-4034HVだけが新品となっています。 なので、古いサーボほどへたっている可能があります。 それと、動画を見ればわかるのですが、サーボ出力が安定せず採用した値が妥当かどうかはわからないので、動画からご自分で考えていただけると助かります。   ロボメカ の後輩がすでにPWMサーボで同様の実験を行なっていますので、そちらの動画も楽しみにしたいです。 それでは今回はここまでです。 最後に、今回の実験に協力してくれた皆様ありがとうございました。