質問するログイン新規登録
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

venv

venvモジュールは、軽量な仮想環境の作成を行います。それぞれの仮想環境は、site ディレクトリに独立した Python パッケージの集合を持っています。仮想環境は、ベースPythonとも呼ばれる、すでにインストールされている Python の上に作成され、明示的にインストールしたパッケージのみが利用可能となるよう、ベースPython から隔離することもできます。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

533閲覧

venv内においてpythonのバージョンを3.9から3.12や3.13にするとModuleNotFoundError: No module named 'requests'

wozniac777

総合スコア6

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

venv

venvモジュールは、軽量な仮想環境の作成を行います。それぞれの仮想環境は、site ディレクトリに独立した Python パッケージの集合を持っています。仮想環境は、ベースPythonとも呼ばれる、すでにインストールされている Python の上に作成され、明示的にインストールしたパッケージのみが利用可能となるよう、ベースPython から隔離することもできます。

Python 3.x

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

2クリップ

投稿2025/09/16 01:04

0

2

実現したいこと

CentOS Stream9、Flask+Nginx+uWSGIの環境下でvenvを作っているのですが、venv内のpythonのバージョンを3.9から3.13に上げたいです。

発生している問題・分からないこと

以下のようにバージョンを上げると、ModuleNotFoundError: No module named 'requests'が出ています。pip freezeでインストールされているライブラリを見ても、既にインストール済み。pip install requestsを行っても、当然、「既に入っています」とメッセージが出ます。なぜかvenv内のライブラリを全て読み込めていないようです。

①python -m venv venv --clear(venvのバージョン固定を外す)
②rm -rf venv(venvの削除)
③python3.13 -m venv venv(venvの再作成)
④source ./venv/bin/activate(venvの有効化)
⑤pip install -r requirements.txt(パッケージの再インストール)

python3.12とpython3.13のバージョンアップを試しましたが、同様のエラーが出ています。
上記と全く同じ方法でpython3.9に戻すとエラーがなく通常通り運用を行えています。

エラーメッセージ

error

1ModuleNotFoundError: No module named 'requests'

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

①python -m venv venv --upgradeでpythonのバージョンアップを試みた→バージョン固定のため、変化せず。

②AlternativesにPythonのバージョン管理
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.13 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.12 2

update-alternatives --display python(リストの表示)
sudo update-alternatives --config python(新しいバージョンへのシンボリックリンクの設定)
→バージョン固定のため変化せず

2~3日いろいろ調べて、ようやくバージョンアップが出来たのは、venvをクリアしてvenvを作り直した方法だけでした。バージョンアップしたのはいいですが、アプリケーションサーバーを再起動すると、インターナルサーバーエラーでサーバーが止まってしまいます。どうしてよいのか分からず途方に暮れています。どうか、ご教授ください。

補足

実装環境はCentOS Stream9、Flask+Nginx+uWSGIになります。

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

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

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

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

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

TakaiY

2025/09/16 02:26

> ModuleNotFoundError: No module named 'requests' このエラーは何をしたときに出るエラーですか? venvをactivateした状態でpythonインタプリタを起動して「import requests」とすると
wozniac777

2025/09/16 02:35

コメントありがとうございます。 サイトにアクセスしたときにエラーが出ています。 main.py の最初らへんのimport requestsの読み込みのところで発生しています
wozniac777

2025/09/16 22:15 編集

(venv) [○○〇]# python Python 3.13.7 (main, Aug 14 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests Traceback (most recent call last): File "<python-input-0>", line 1, in <module> import requests ModuleNotFoundError: No module named 'requests'
katsuko

2025/09/16 14:52

uWSGIはどのようにインストールしたのでしょうか。 仮想環境に入ってpipでインストールしないと、仮想環境のモジュールは認識しないと思います。
katsuko

2025/09/16 23:32

あと、仮想環境に入って、`pip freeze` ではなく、`python -m pip freeze` で確認してみてください。
wozniac777

2025/09/17 00:06

ありがとうございます。 ご指摘の通り、uWSGIのインストールが必要みたいで、インストールをしようとしたのですが、エラーが出てきまして、chatGPTに聞いてみたところ。uWSGIの開発が滞っていて新しいpythonに対応していないのでは?と言うことでした。それで、chatGPTに言われるがまま、gunicornをインストールしてみました。そしたら、設定ファイルの書き換えがモロモロ出てきまして、地獄化しています泣 あと、ちょっとで出来そうなのですが、chatGPTに頼ってするのは初めてで、ちゃんと公開できるか不安で仕方ありません・・・。
quickquip

2025/09/17 01:40 編集

> ご指摘の通り、uWSGIのインストールが必要みたいで、インストールをしようとしたのですが、エラーが出てきまして、 「インストールしようとした」 具体的にどんな操作をしたのか? 「エラーがでてきまして」 どんなエラーが出たのか? を隠す理由はなんでしょう? > uWSGIはどのようにインストールしたのでしょうか。 の質問を無視して答えなかった理由はなんでしょう? あと uwsgiはメンテナンスモードになっています(という宣言がされています)が、バグフイックスや新しいPython・コンパイラへのポート作業は継続しています。3.13 や 3.14 beta への対応も含めてリリースは続いています (3.13に対応する前の)古いバージョンをインストールするよう明示してしまっているとかはないですか? requirements.txt も隠されているので分かりませんが、自分で3.13にエラーなく入ることを目指してバージョンなどを調整したものでしょうか?
TakaiY

2025/09/17 02:44 編集

上のコメントに同意で、なぜrequirements.txtにuWSGIが入ってないのかとも思いますが、まず。 > chatGPTに聞いてみた ChatGPTなどの生成AIが出してきた回答を鵜呑みにするのはやめましょう。古かったり、間違えていたりすることが多いので。 利用するにしても、一次情報(uWSGIのドキュメントとか)を確認するべきです。
wozniac777

2025/09/17 02:39

なぜrequirements.txtにuWSGIが入ってないのか?それ、僕も思いました。質問をしようかと思っていたら、ご指摘されました・・・。 そうですよね・・・。ネットでググりながらやってみます。
wozniac777

2025/09/17 02:46

> uWSGIはどのようにインストールしたのでしょうか。 無視したわけではないのですが、すみません。普通通りvenvをアクティブ化してpip install uwsgiでインストールしようとしましたが、Failed to build installable wheels for some pyproject.toml based projects mq> uwsgiとなり、エラーを直せず、断念しました。答えになっていなかったら申し訳ありません。力不足です。 >uwsgiはメンテナンスモードになっています(という宣言がされています)が、バグフイックスや新しいPython・コンパイラへのポート作業は継続しています。3.13 や 3.14 beta への対応も含めてリリースは続いています そうなんですね。鵜呑みにAIをしてしまいました。gunicornをインストールしなければよかったです。
wozniac777

2025/09/17 02:57

>ChatGPTなどの生成AIが出してきた回答を鵜呑みにするのはやめましょう。古かったり、間違えていたりすることが多いので。 利用するにしても、一次情報(uWSGIのドキュメントとか)を確認するべきです。 ドキュメントを読む習慣がなくて、今後はそのように精進致します。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

どうも話を聞いてもよくわからなかったのですが、ようやっと理解したような気がする。(違っているかもしれないけど)
つまり、こういうことですか?

  1. 元々、Python3.9+Flask+Nginx+uWSGIで動いていたプログラムがあった。
  2. Pythonのバージョンを上げたいために、3.13(その他)をインストールした。
  3. 3.13で仮想環境(venv)を作り、必要なモジュールをインストールした。
  4. Nginx、uWSGIは、何もいじっていない。
  5. サイトにアクセスすると、3でインストールしたモジュールが認識されず、ModuleNotFoundErrorになる。

であれば、NginxとuWSGIを何もいじっていないのが原因です。

uWSGIもPythonに依存したプログラムであり、そういった意味ではモジュールと同じです。
いずれか一つの環境でのみ動作します。
Python3.9の環境で動いていたuWSGIをそのまま使っているのであれば、Python3.9の環境で動かしていることになります。

質問コメントにも書いたとおり、仮想環境内でpipでインストールするのが一番手っ取り早いかと思いますが、もしそれでエラーが出るのであれば、そのエラーを解決すべきではないでしょうか。

ちなみに、ここによると、Fedoraの話ですが、

uWSGI を pip でインストールするには、gcc と python3-devel が必要になりますので、インストールします。

とのことです。
同じRedhat系ディストリビューションですから、CentOSも同様ではないですか。


書き込みを見直して気づいたのですが、書いた以上ちょっとだけフォローしておきます。
python3-devel というのは、Pythonの開発環境パッケージだったと思います。
ただ、これは 標準のPythonのバージョンの開発環境に対するもの です。
もしかすると、CentOS9だと3.9になるんじゃないですか。

自分もCentOSは長い間触っていませんし、3.13などをどのようにインストールしたかもわかりませんので、具体的にどうすればいいかは私にはわかりません。
ただ、仮想環境のPythonのバージョンの開発環境が必要だ、ということだけ、フォローとして助言しておきます。

投稿2025/09/17 13:20

編集2025/09/17 13:35
katsuko

総合スコア3614

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

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

wozniac777

2025/09/17 14:34

回答ありがとうございます。 恥ずかしながらnginxとuWSG Iはグローバルな場所にインストールされているものとばかり思っていました。uWSG Iが原因だと分かり、解決が進みました。 残念ながらchat GPTの言われるがままに、gunicornに変えてしまいましたが、今回、凄く勉強になりました。一応は公開までこぎつけました。 普段はなかなかLinuxコマンドを使う機会が無く、まだまだ未熟ですが今後も精進したいと思います。 みなさまも本当にコメントありがとうございました。
wozniac777

2025/09/17 14:40

まさしく、katsukoさんの言う通りです。 chatGPTもuWSGIを入れる際、同じようにgcc と python3-devel を何度もインストールしていた記憶があります。でも、結局ダメで僕もchatGPTも諦め気味で、gunicornじゃダメですなんですかってなりまして・・・。なかなか大変な思いをしました泣
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問