質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

2回答

6733閲覧

pipenvでインストール可能なバージョンの確認方法

penpineapple

総合スコア2

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

1クリップ

投稿2021/07/09 06:08

前提・実現したいこと

pipenvでパッケージをインストールするときにインストールできるバージョンの正しい確認方法が知りたい。

発生している問題

pythonのパッケージ管理にpipenvを使用しています。
ターミナルでpipenv install numpy==1.21.0と打てばバージョンを指定してインストールできますが、どのバージョンがインストールできるか確認してからインストールしたい時があります。

pypiのサイトでバージョンを確認すればいいかもしれませんが、できるだけバージョンの確認とインストールをターミナル内で完結させたいです。
pipenv install numpy==などと空文字指定すれば以下のようにインストール可能なバージョンを確認することができますが、エラーを出して確認している感じなので正規の方法ではない気がします。

ERROR: Could not find a version that satisfies the requirement numpy== (from versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0rc1, 1.13.0rc2, 1.13.0, 1.13.1, 1.13.3, 1.14.0rc1, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0rc1, 1.15.0rc2, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0rc1, 1.16.0rc2, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0rc1, 1.17.0rc2, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0rc1, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0rc1, 1.19.0rc2, 1.19.0, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.19.5, 1.20.0rc1, 1.20.0rc2, 1.20.0, 1.20.1, 1.20.2, 1.20.3, 1.21.0rc1, 1.21.0rc2, 1.21.0) ERROR: No matching distribution found for numpy==

何か他に最適なバージョンの確認方法はありますでしょうか?それとも上記の方法が一般的なのでしょうか。

補足情報(FW/ツールのバージョンなど)

python 3.9.6
pipenv 2021.5.29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/07/10 01:58

> どのバージョンがインストールできるか確認してからインストールしたい 実はここらへんの意図がわからなくて、「それはどういう状況か?」「なにが解決したい課題なのか?」という素朴な疑問を持ちました。
penpineapple

2021/07/10 14:25 編集

@quickquipさん ご質問ありがとうございます。 たしかに今回の問題はもっと根本的なところにあるかもしれませんね。 現在、個人でpythonのアプリ開発を行なっていて、手探りでネットで調べながらしながら作業しています。 開発したアプリはpythonやpipの使い方を全く知らない同僚が使う予定です。 今まではpipとvenvを使って開発を進めていて、setup.pyを作成して、同僚はpythonをインストールしてpipコマンドをコピペ・実行するだけで作成したアプリをインストールできるようにしていました。 ただこの方法だと依存するライブラリが増えれば増えるほど依存関係の管理が大変になるわけで、「pip list」で現在インストールしているライブラリを確認し、アプリが直接依存しているライブラリを抽出して「requirements.txt」などに記述する必要があります。もちろん開発環境にはfleke8などのリントやフォーマット用の開発用ライブラリが共存していてそれらは含めたくないため「pip freeze > requirements.txt」は使用したくありません。 これらのことからライブラリ管理をpipenvに移行して依存関係の管理を簡単にしようとしたのですが問題がありました。 当たり前ですがsetup.pyはPipfileやPipfile.lockから直接依存するライブラリを自動抽出することができません。 そのため結局最後は手作業で、Pipfileの中身を確認しながらsetup.cfgの方に依存ライブラリを記述する必要があります。できればライブラリのバージョンも指定したいです。 最近の有名ライブラリの開発スピードは凄まじく、現在利用しているバージョンが未来のバージョンと互換性が担保されるとは限りません。そのためなるべくsetup.cfgにはバージョンを指定して記述したいと考えています。 しかし困ったことに「pipenv install <ライブラリ名>」でインストールするとPipfileには「numpy = "*"」という感じで現在利用しているバージョンが確認できません。 Pipfile.lockに一応バージョンが記録されていますが全ての依存関係が記述されていたりハッシュ値が邪魔していて「pip list」よりもバージョンの確認が大変です。 一方で「pipenv install <ライブラリ名>==<バージョン>」と記述すればPipfileにライブラリ名と一緒にバージョンも書き込まれます。 そのためライブラリの最新のバージョンを確認してバージョンを指定してpipenvでインストールする、という方針を取ることにしました。 しかしインストールできるバージョンの確認方法がいまいちパッとしません。 「pipenv install numpy==」を実行してインストールエラーを強制的に出せば簡単にバージョンが表示されるのだから、バージョンを確認する別のコマンドが用意されていてもおかしくないのでは?と思い質問しました。(pip searchはpypiのサーバー上の問題で使えなくなっています) 以上、長々とこの質問を立てるまでの経緯と状況を説明してみました。 目先の解決したいことはバージョンの正しい確認方法ですが、根本的にはパッケージ管理の最適化、でしょうか。
guest

回答2

0

追記・編集依頼欄の中身を読んだ上で、2個ほど回答的なものを書きます。

pypi-cliを利用する

この質問を最初に読んでちょっとだけ調べてみたのですが、PyPIにpypi-cliというCLIパッケージが存在するようです。
PyPIでのページ

挙動的には、PyPIにCLIでアクセスしてパッケージの情報やバージョン履歴を取得+出力するものです。
GitHubを見る限り開発はもう進んではいないようですが、手元のPython3.9でも一応動くので、
エラー出力の特殊利用という形式ではなく普通の動きとしてバージョン情報を確認するにはある程度機能しそうではあります。

パッケージ管理をPipenvからPoetryに変える

Poetryのサイト

PoetryはPipenvと概ね同じ位置づけにあるアプリケーションです。
少なくともpipenv installに相当するpoetry addにおいて、
パッケージのバージョンが未指定の場合は、パッチバージョンまで明記された状態で管理されるようになります。

※poetryでユーザーやコマンドで編集するpyproject.tomlの中身

[tool.poetry.dependencies] python = "^3.9" numpy = "^1.21.0"

なお、この場合だとsetup.py自体が不要になる可能性があります。
(setup時に固有の特殊処理をしないのであれば、pyproject.toml,setup.cfgの管理で困らないのが体感的な完走です)

投稿2021/07/10 15:12

attakei

総合スコア2740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$ pipenv shell (pipenv) $ pip install numpy==

とかどうでしょうか?

投稿2021/07/10 03:58

Noin

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penpineapple

2021/07/10 14:28 編集

@Noinさん 質問に記載していた「pipenv install numpy==」のpipenvの部分がpipになっていますが元のコマンドと何が違うのでしょうか。 pipenvはpipのラッパーなので「pipenv install numpy==」も内部で「pip install numpy==」を実行していると思います。 一応、私の環境で実行してみましたが全く同じエラーが表示されました。 せっかく回答していただいたところ申し訳ないのですがもう一度質問文読んでいただけると幸いです。
Noin

2021/07/10 14:29

失礼、バージョン一覧が見たいという意図しか見ていませんでした。 そういう意味ではその表示が正規の方法です。 少なくともバージョン一覧を取得してくるオプションはありません。
penpineapple

2021/07/10 14:34

確認ありがとうございます。 やはりオプションではないんですかね。 「pipenv(or pip) install numpy==」だと簡単にバージョンの一覧が表示されるのでバージョンを羅列するような機能があってもおかしくないかなとおもったんですが。。。
Noin

2021/07/10 15:05

比較的新しい言語だから成熟していないのと、エラーで出してるからいらないんじゃね? という感じだと思います。 そういう私もあまり違和感なく使ってますし、初期構築時くらいにしか使わないです。 なので、使うときはいつも大体最新を入れて、そこで固定する形だからですかね。。。?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問