ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラー内容
ModuleNotFoundError: No module named 'mypackage'
# または
ModuleNotFoundError: No module named 'mypackage'; 'mypackage' is not a package
# または
ImportError: cannot import name 'foo' from 'mypackage'
原因の切り分け
| 原因 | 確認方法 | 対処 |
|---|---|---|
| パッケージ未インストール | pip list | grep xxx | pip install xxx |
| 仮想環境を有効化していない | which python | conda activate / source venv/bin/activate |
| __init__.py が無い | ディレクトリ確認 | 空の __init__.py 作成 |
| import パスの typo | 正確なパッケージ名を確認 | 正しいパスに修正 |
| sys.path にない | print(sys.path) | sys.path.append or PYTHONPATH |
| 循環インポート | import 構造を見る | import を関数内に移動 |
対処1: パッケージインストール
# 現在の Python と pip を確認
which python
which pip
python --version
# パッケージインストール
pip install requests
pip install pandas==2.0.3 # バージョン指定
pip install -r requirements.txt
# 仮想環境で実行している場合、有効化を忘れない
conda activate myenv
# または
source .venv/bin/activate
# 入っているか確認
pip list | grep requests
pip show requests
対処2: __init__.py を作る
独自パッケージを作るとき、ディレクトリにこのファイルがないと「パッケージとして認識されない」ことがあります:
myproject/
├── main.py
└── mypackage/
├── __init__.py ← ★ これが必要
├── module1.py
└── module2.py# main.py
from mypackage import module1
# または
from mypackage.module1 import some_function
# __init__.py は空でも OK
# 中身を書く場合
# mypackage/__init__.py
from .module1 import some_function # パッケージ直下で公開
from .module2 import another_function
__all__ = ['some_function', 'another_function']
__version__ = '1.0.0'
注: Python 3.3+ では「名前空間パッケージ」として __init__.py なしでも動くことがありますが、明示的に作っておく方が安全。
対処3: sys.path を確認・追加
import sys
# 現在の検索パス
print(sys.path)
# 出力例:
# ['', '/usr/lib/python3.11', '/usr/lib/python3.11/site-packages', ...]
# 動的に追加
import os
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
# パスを先頭に追加(優先度高)
sys.path.insert(0, '/path/to/mypackage')
# pathlib 経由
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
対処4: PYTHONPATH 環境変数
# 一時的に
export PYTHONPATH="/path/to/mypackage:$PYTHONPATH"
python main.py
# Windows
set PYTHONPATH=C:\path\to\mypackage;%PYTHONPATH%
# 永続化(.bashrc / .zshrc に)
echo 'export PYTHONPATH="$HOME/code/mypackage:$PYTHONPATH"' >> ~/.bashrc
# VS Code の settings.json
{
"python.envFile": "${workspaceFolder}/.env"
}
# .env
PYTHONPATH=./src
対処5: 名前空間の衝突
標準ライブラリやインストール済みパッケージと同じ名前のファイル/フォルダを作るとエラーになります:
myproject/
├── main.py
├── json.py ← ★ NG: 標準ライブラリ json と名前が衝突
└── ...
# main.py で
import json # myproject/json.py を読みに行ってしまう
# → ImportError や謎の挙動
# 解決: ファイル名を変更
# json.py → my_json.py
対処6: 循環インポート
# ❌ NG: 循環インポート
# a.py
from b import bar
def foo(): return bar() + 1
# b.py
from a import foo
def bar(): return foo() + 1
# → ImportError: cannot import name 'foo' from partially initialized module
# ✅ 解決1: 関数内インポート(遅延ロード)
# a.py
def foo():
from b import bar
return bar() + 1
# ✅ 解決2: 設計を見直して片方向に
対処7: パッケージインストール構造を整える
自作パッケージを pip install -e . で開発インストールすると path 問題が解消:
myproject/
├── setup.py
├── pyproject.toml
└── src/
└── mypackage/
├── __init__.py
└── ...# setup.py
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1.0',
package_dir={'': 'src'},
packages=find_packages(where='src'),
install_requires=['requests', 'pandas'],
)# 開発インストール(コード変更が即反映)
cd myproject/
pip install -e .
# 以降、どこからでも from mypackage import ... で使える
VS Code / PyCharm でのインタプリタ設定
- VS Code: Ctrl+Shift+P → "Python: Select Interpreter" で仮想環境を選択
- PyCharm: Settings → Project → Python Interpreter で選択
- 正しいインタプリタが選ばれていないと、CLI では動くのに IDE では import エラーが出る
デバッグ Tips
# どの Python が使われているか
import sys
print(sys.executable) # /usr/bin/python3
print(sys.version) # 3.11.0
print(sys.path) # 検索パス一覧
# パッケージがどこにあるか
import numpy
print(numpy.__file__) # /path/to/numpy/__init__.py
print(numpy.__version__)
# pip 経由でファイル一覧
# pip show -f mypackage
関連エラー
- ImportError: cannot import name 'X' from 'Y': モジュールはあるが特定の名前が無い → バージョン違い / __all__ の確認
- AttributeError: module 'X' has no attribute 'Y': 同上
- RecursionError: maximum recursion depth exceeded: 循環インポート由来のことあり
- ModuleNotFoundError でなく ImportError: パッケージはあるが何か壊れている(再インストール)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- ModuleNotFoundError: No module named '~'; '~' is not a package
- pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available
- ...AppData/Local/Microsoft/WindowsApps/python: Permission denied
- 【pycharm】connecting to console が終わらない
- can only concatenate str (not "NoneType") to str
- can only concatenate str (not "datetime.datetime") to str
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?