virtualenv を導入しよう思い立ったのですが、 Python のパス周りについての理解が浅くて何をしているか分からなかったので調査してみました。 目標 (virtualenv を理解する前提として) Python が module search path をどうやって設定しているか理解する。 ※モジュールのインストールについてはまたそのうち。 調査にあたってはこちらのブログを参考にさせて頂きました。 なお以下は自分のマシン(Ubuntu)を前提に書いています。 Python がモジュールをロードする仕組み import spam と書いてある場合、 Python は まず built-in module の中に spam があるかどうか探し 次に sys.path に書いてあるパスの下に spam がないかを先頭から順番に検索 してくれます。 詳しいことは公式ドキュメント(6.1.