pythonの仮想環境構築をいくつかやったので使ってみた感想を書く

前回の続きになります。 前回は仮想環境が必要なの?というテーマで書いてみましたが、とはいえ使えるに越したことはないので実際に試してみて使った感想を残そうと思います。 今回仮想環境を構築するにあたって試してみたのは以下 pip venv pyenv(環境的に使えなかった) pipenv poetry docker(環境的に使えなかった) Rye(環境的に使えなかった) 一応ざっくりと説明すると ライブラリのインストール:pip、pipenv、poetry 仮想環境の構築:venv、pipenv、poetry、docker pythonのバージョン管理:pyenv、docker 一般的に組み合わせとしては pip + venv + pyenv pipenv + pyenv poetry + pyenv docker + pipenv あたりだと思います。私も依存関係とかは詳しくないのでそうなんだという認識ですが… まずは “pip” 、pythonユーザーであれば皆さん使用してるので説明は省きますが、標準ライブラリで馴染みがあるものですね。 次は “venv” 、昔はvertialenvが使われていたみたいですがそれが標準ライブラリになったものです。vertialenvとは別物ですが使い方は同じですね。 仮想環境の作成や有効化ができ、標準ライブラリなので様々な教材でも使用されると思います。有効化に面倒な設定があったり、自動化やライブラリ一覧の出力にも手間がかかるので少し使いにくいですが、覚えておいた方がいいですね。vscode使うならインタープリターの選択で有効化できますが… 次は “pyenv” です。私の環境ではシステム環境変数をいじれないので使えませんでした。 pythonのバージョンがインストールできず、localやglobalの設定もできない状況でした。使えなくて残念ですが、vscodeのインタープリターで選択すれば問題ないのでいいかと あるいはユーザー環境変数で任意のpythonバージョンのPATHを上に移動させるとかですかね。 次は “pipenv"です。こちらはライブラリのインストールと環境変数の作成が一体化した便利なライブラリになっています。 個人的には一番使いやすく感じました。仮想環境構築のしやすさ、ライブラリ一覧の自動化は便利だなと感じました。制限がなければ “pipenv + pythonのバージョン管理” が一番楽な気はします。 ただ、インストールの遅さや抱えてる問題もあるみたいなのでpipenvさえあればいいとは思いませんが、優先度は高いというイメージですね。 次は “poetry” です。使う用途としては"pipenv"と同じですが、異なる点で言うとPyPIにビルド・公開ができるという点になります。 PyPIにビルド・公開することはあまりないので、そうなるとpipenvとの使いやすさを比べてどうか?ということになりますが、使いやすさはpipenvに軍配が上がります。 まず、poetryはpython3.9以上でしか使用できません。今の現場はpython3.7(いつか3.11になる予定)なので使えなかったりします。また、ライブラリのバージョンでも同様に使えないものがあります。 他にも仮想環境の有効化がvenvと同様手間がかかったり、vscodeのインタープリター選択画面に出なかったのでパスを通す設定をしないといけないなどがあったりして使いにくさを感じました。私の環境構築方法に問題があるかもしれませんが… おまけとしてRyeはチームよりも個人開発向けなのでやろうとしたのですが、客先PCでは使わないほうがよさそうです。個人で触ってみようとは思います。 それからDockerです。Desktop版をインストールしようとしましたがダメでした。とはいえAWSの実行ではdockerコンテナを利用しているので、ローカルでは使えませんが開発や本番環境では使われているのでdockerfileの中身やdocker-composeをチェックしてみます。ローカルだとどんな使いやすさなんですかね? 前にも話したんですが、pythonやライブラリのバージョンが固定されているような現場では正直不要だとは思いますが、知っておいて損はないかと思いますし、知識はどこかで役立つと思います。 手軽で使いやすいという点では “pipenv” > “poetry” >= “pip + venv"に"pyenv"を足したものかと思いますが、覚え順としては"pip + venv” > “pipenv” > “poetry” がいいと思います。ついでにDockerまで使えればほぼ問題ないという印象です。 ...

2024年3月8日

常駐先のPCでPythonの仮想環境構築って必要なの?

たまには自身の仕事の環境のことでも話をしてみるのもいいかと思って記事にしました。ただ自身の疑問や考えを整理するために書いてるので、大したことは書かないかと思います。人間っぽくていいなと思います。 大前提としてpythonの仮想環境構築について知っておくに越したことはないと思います。客先に派遣される業態ではいつ使うかわかりませんし、自社開発でもライブラリの更新をした方がセキュリティ面でも安心できると思うので、安定板と更新版で使い分けができそうです。 さて、最近新PCに移行することになりました。前のPCでは仮想環境を使ってこなかったので、これを機に仮想環境について調べこの記事を書くことにしました。仮想環境で何を使ったかはあまり触れないと思います。 私の現場では客先常駐ではないですが、お客様先から配布されたPCを使って開発を行います。スペックは特段低いわけではないので、重たい処理や大量のデータを扱わなければ問題ない程度です。ちなみにWindowsです。 ただお客様先から配布されたPCなのでセキュリティは固めです。実はpyenvを使おうとしたのですがインストールがうまくいかずpythonバージョンの使い分けができませんでした。 他にもDocker Desktopをインストールしようとしましたがこちらも無理でした。申請すれば通るかもしれないですが、他にも方法はありますので一旦諦めました。ちなみにWinMerge(ファイル同士の比較)もインストールできませんでした。前のPCは標準搭載だったのですが… ここから本題なのですが、仮想環境を作る必要があるのか?ライブラリの管理をする必要があるのか?という問題です。もちろん客先によっては自由度が高いところもあるので一概には不要だとは思いません。 私の話になりますが、本番環境ではAWSを使っています。開発環境もありますがスコアリングのみであればローカルでvscodeを使用しています。 AWSではDockerfileでpythonとライブラリのバージョンを指定して実行しているのですが、そのバージョンが全てのプロジェクトで統一されています。pythonのバージョンであれば3.7.12、pandasであれば1.12.0という具合です。 こうなるとローカルでも使用するpythonやライブラリのバージョンは固定されるので、仮想環境の構築は不要でとりあえずpipでインストールしてしまえばいい気もします。requirements.txtに吐き出していまえば他の人にも共有できて同じ環境が作れますし… 整理してみましたがやはり不要な気がします。とは言え仮想環境構築で使ったvenvとpyenv(ほぼインストールのみですが…)の使い方もわかりましたし、他のライブラリであるpipenvやPoetryも触ってみようと思います。 次に話すとしたら実際に仮想環境構築したことかAWSについてですかね?ではでは

2024年3月6日

Python3.12で仮想環境を整え、Open Interpreterを使って少し苦戦した話

話題としては遅い気がしますが、初めてOpen Interpreterを使いました。そのことについて記載しようと思います。 Open Interpreterについて 最近社用PCのPythonバージョンを3.12に上げました。なので自身のPCのPythonバージョンも3.12に上げることにしました。また、同タイミングでOpne Interpreterのことを知ったので使ってみようとしました。 私はCode Interpreterのことは知っていたのですが使ったことはなかったです。違いがあまりわからないのですが、Code Interpreterのオープンソース版がOpne Interpreterのようです。 Open Interpreterを実行した際、自動でライブラリをインストールされることがあるみたいです。まずは仮想環境を作ることにしました。 仮想環境の作成とライブラリインストール 今回仮想環境で使ったライブラリは"pipenv"になります。特にこれといった理由はないです。Condaでもvenvでもいいとは思います。pipenvの使い方はこちらを参考にしました。 Pipenvをインストールし、必要なライブラリをインストールします。初期化しなくてもライブラリのインストール時に勝手に作られるので、意図的にPyhonのバージョンを変えなければ初期化しなくても問題ありません。 もし、ライブラリのインストール時に “RuntimeError: Failed to lock Pipfile.lock {ライブラリ名}” というエラーが出た場合は一度仮想環境を削除して、再度作成するとうまくいくと思います。私の経験談なのでサンプル数1ですが… 仮想環境を作った時はそこのインタープリターを選択しましょう。処理の実行が失敗しますので… 仮想環境ができたのでいよいよOpen Interpreterをインストールします。“pipenv shell"でアクティブ化し、“pipenv install open-interpreter"を実行します。 Open Interpreterインストール時のエラー対処 右のエラーが出ました。“ERROR: Couldn’t install package: {} Package installation failed…” これだけ見ても原因は変わりませんが、面倒なのでコマンドを実行した後の行から全てコピーしてきてテキストファイルに張り付け、Chat-gptに聞いてみました。そしたら下記の回答が返ってきました。 これ見たときに「Python関係ないのに必要なの?」と思っちゃいました。だってC++とRustですからね。ちなみにRustを聞いたとき浮かんだのはゲームのほうでした(笑) 一応目視でも似たようなエラーが出ているかを確認してみると以下の2つのエラーが見れました。 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/ ERROR: Failed building wheel for tiktoken、ERROR: Could not build wheels for tiktoken, which is required to install pyproject.toml-based projects ...

2024年1月27日