2019年1月27日

pythonコマンドがNo module name django や SyntaxError となってしまう時に確認すること

音声読み上げ関連のAPIや機械学習機能を見据えたアプリ開発に向けてpythonを触るようになり、conohaのVPSでCentOS+Djangoという環境でDjangoでの制作をスタート。クリックして進めるだけで環境が準備される、なんて便利な時代なんだと思いながらサーバー環境はあっという間に準備完了。さてDjangoは動作するのかな、と思いつつ、とりあえずバージョン確認のコマンドを打ってみました。

python -m django --version

するとこんなメッセージが表示されてしまいます。

No module name django

「Djangoっていう名前のモジュールは無いよ」と。そんなはずはない、ちゃんと正常にインストールされているはず。「sample」というプロジェクトがデフォルトで設定されているので、とアプリケーションを追加してみる。

python manage.py startapp hello

するとこんな感じのメッセージ。

File "manage.py", line 14
  ) from exc

SyntaxError: invalid syntax

Syntaxエラー。まだ何もしてないのに。manage.pyってファイルを開いてみると確かに該当の行があり、ウェブで調べてみると「from exc を消してみれば?」という間違えたアドバイスを見つけ、消してみても改善せず。もう泥沼です。

という状況を切り抜けられた方法がこちら。

pythonのバージョンを明記

よくよく調べてみると、pythonは2系と3系が並行して開発され、且つ書き方が違う等の要因があり、異なるバージョンを共存させるというケースがあるようで。conohaのVPSでDjangoを導入すると、pythonは2系と3系が共存した状態である環境のうえで、Djangoは3系でインストールされていました。

この状態でpythonコマンドは2系だと認識され、djangoは3系でインストールされているので、上記の通り認識されなかったりSyntaxエラーになったりしていたようです。という事で、バージョンを明記する事で解決。

※事前にDjangoをインストールしたpythonのバージョンを確認
※以下はpython3.6の例です

python3.6 -m django --version
python3.6 manage.py startapp hello

以上、pythonコマンドが No module name django や SyntaxError となってしまう時に確認することでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です