音声読み上げ関連の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 となってしまう時に確認することでした。