質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.61%

  • Python

    7482questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    983questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Djangogirlsのチュートリアルでmodels.py が実行できない

受付中

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 719

kaz....

score 2

前提・実現したいこと

Djangogirlsというサイトのチュートリアルに従いブログの作成をしていたところ、models.pyの編集したところでエラー出てしまい困っています。お助け頂きたいです。
■ チュートリアル 
https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/how_the_internet_works/index.html

発生している問題・エラーメッセージ

Traceback (most recent call last):
  File "/Users/you/djangogirls5/blog/models.py", line 8, in <module>
    class Post(models.Model):
  File "/Users/you/djangogirls5/blog/models.py", line 9, in Post
    author = models.ForeignKey('auth.User')
  File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 846, in __init__
    to, on_delete, from_fields=['self'], to_fields=[to_field], **kwargs)
  File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 491, in __init__
    super(ForeignObject, self).__init__(rel=rel, **kwargs)
  File "/Library/Python/2.7/site-packages/django/db/models/fields/__init__.py", line 172, in __init__
    self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 39, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
[Finished in 1.809s]
Git
GitHub (preview)

該当のソースコード

#models.py

#!/usr/bin/python

from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

該当のソースコード

#settings.py

"""
Django settings for mysite project.

Generated by 'django-admin startproject' using Django 1.11.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'a50vp3o@9#*tldh*3bzb6voehi_)xv#bu&p1+i2ed1cf6!hu4('

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'mysite.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'mysite.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/

LANGUAGE_CODE = 'ja-JP'

TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = False


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'

試したこと

  1.   djangoチュートリアルに従い、
    export DJANGO_SETTINGS_MODULE=mysite.settings
    django-admin runserver を実行したところ、ModuleNotFoundError: No module named 'mysite'というエラーが出ました。

■https://docs.djangoproject.com/ja/1.11/topics/settings/#using-settings-without-setting-django-settings-module

  1.   python2,3ともにインストールしているので以下のサイトに従いmodels.pyのシェバン行を#!/usr/bin/python3に変更しましたが、以下のようにエラーが出ました。

■https://blogware.info/python/prog/shebang/

Unable to run

/usr/bin/python3
Did you start Atom from the command line?

  atom .
Is it in your PATH?

PATH: /Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

python3.6.2
mac OS

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

>djangoチュートリアルに従い、
>export DJANGO_SETTINGS_MODULE=mysite.settings
>django-admin runserver を実行したところ、ModuleNotFoundError: No module named 'mysite'というエラーが出ました。

ModuleNotFoundError: No module named 'mysite'
はsettings.pyが入っているmysiteフォルダが見つけられずにエラーが出ている可能性があります。

そもそもmysiteフォルダはありますか?

mysiteフォルダの中に
blogフォルダ、mysiteフォルダがあり、
さらに内側のmysiteフォルダの中にsettings.py
がある状態じゃないと動かない可能性があります。

追記
一般的なディレクトリ構成
djangogirls
├── blog
│ ├── init.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── init.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── djangogirls
│ ├── init.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
└── mysite (これがちょっと変?)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/28 20:32

    ディレクトリとファイルはこのようになっています、今回のケースでは一番はじめのmysite=djangogirlsという事であっているでしょうか?

    djangogirls
    ├── blog
    │ ├── __init__.py
    │ ├── admin.py
    │ ├── apps.py
    │ ├── migrations
    │ │ └── __init__.py
    │ ├── models.py
    │ ├── tests.py
    │ └── views.py
    ├── db.sqlite3
    ├── manage.py
    └── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

    キャンセル

  • 2017/09/29 05:06 編集

    その状態なら
    export DJANGO_SETTINGS_MODULE=settings
    でやってみてください。

    いかがでしょうか?

    キャンセル

  • 2017/09/30 14:39

    実行したところ、models.pyを実行した時のエラーは変わらずで、django-admin runserverを実行すると、ModuleNotFoundError: No module named 'settings'のエラーが出てしました..

    キャンセル

  • 2017/10/01 17:29 編集

    普通settings.pyはdjangogirlsの中にさらにdjangogirlsフォルダを作ってその中にいれるんですよ。

    そちらのディレクトリを参考に追記したのでこのようにファイルを移動して
    export DJANGO_SETTINGS_MODULE=djangogirls.settings
    してから実行してみてください。

    参考
    https://docs.djangoproject.com/ja/1.11/intro/tutorial01/

    キャンセル

  • 2017/10/02 17:06

    他の方が指摘されている通り、settings.pyの場所がここに貼り付けとき表示がずれてしまったようで、「djangogirls>mysite>settings.py」となっていました。大変申し訳ありません。

    キャンセル

  • 2017/10/03 08:41 編集

    なるほど、それでしたらディレクトリの構成は一般的ですね。

    >export DJANGO_SETTINGS_MODULE=mysite.settings
    >django-admin runserver
    の代わりに

    manage.pyと同じディレクトリ(つまりdjangogirlsの中)に移動して
    export DJANGO_SETTINGS_MODULE=mysite.settings
    python manage.py runserver
    してもらえますか?

    キャンセル

  • 2017/10/04 12:19

    export DJANGO_SETTINGS_MODULE=mysite.settings
    を実行したとろ、
    ModuleNotFoundError: No module named 'mysite'というエラーは出なかったのですが、models.pyを実行したところ、django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
    というエラーが出てしまいました...

    キャンセル

  • 2017/10/04 12:43 編集

    それは、こちらの説明に関するエラーですね。

    https://docs.djangoproject.com/ja/1.11/topics/settings/#either-configure-or-django-settings-module-is-required

    ようするにexport DJANGO_SETTINGS_MODULE=mysite.settingsが認識されていなさそうです。
    上記のサイトで説明されているsettings.configure()で設定するか
    環境変数DJANGO_SETTINGS_MODULEが正しく設定されているか確認したほうがよさそうですね。

    環境変数DJANGO_SETTINGS_MODULEが正しく設定されているか確認するなら

    manage.pyをエディタなどで開いて

    if __name__ == "__main__":
    のすぐ下に
    for k, v in os.environ.items():
    print(k, v)

    と追加してから

    export DJANGO_SETTINGS_MODULE=mysite.settings
    python manage.py runserver

    と実行したらエラーが出る前にバーっと環境変数が表示されます。
    その中に('DJANGO_SETTINGS_MODULE', 'mysite.settings')
    と表示されてなかったら環境変数が認識されていません。

    そもそもmanage.pyのif __name__ == "__main__":のすぐ下に
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", 〜)
    とありませんか?ありましたら〜の部分は何になっていますか?

    キャンセル

  • 2017/10/05 15:46

    偶然職場で同じ症状でている人がいました。

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", 〜)

    を正しく設定しているとエラー消えるみたいです。

    キャンセル

+1

Djangogirlsチュートリアルどおりに最初から最後まで全部実行できた者です。

Django、Pythonは初心者レベルで見よう見まねで取り組んだだけなので、的外れの回答かもしれないことは、前置きしておきます。

質問文のコードで気になったとは、以下の部分です。

#models.py

!/usr/bin/python

 

Djangogirlsの説明に

blog/models.pyを開いて全部削除し、下のコードを書きます:

とあるので、私が実行したときは、文面どおりこの部分は削除しています。(それが正しいかどうか不明ですが。)

また、他の方指摘されている「settings.py」の場所ですが、多分、ここに貼り付けとき表示がずれて「djangogirls」直下のように見えてるだけです。
実際は、「djangogirls>mysite>settings.py」ですよね?
チュートリアルどおりだとしたら、mysite内で問題ないかと思います。
(チュートリアルにかかれているやり方が特殊だとしたら私にはわかりません。)

検討違いのことを言ってるかもしれませんが、参考までに。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/02 17:12

    ご指摘ありがとうございます、settings.pyの場所が貼り付けの際にずれてしまったようです。models.pyにおいてdjangogirlsのチュートリアル通り実行しても、エラーが発生してします...

    キャンセル

0

シェバンのパスが気になります。

Python3はどのようにインストールしましたでしょうか?

もしPython3パスが分からない場合は、以下コマンドを実行して、Python3のパスを確認してください。

type python3

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/28 15:11

    そちらのコマンドを実行しましたところ、
    python3 is /Users/you/djangogirls/myvenv/bin/python3
    と表示されました!

    キャンセル

  • 2017/10/04 12:34

    すみません、勘違いしてました。python3はpythonの公式サイトからダウンロードしていました。アンインストールし、homebrewでpython3をインストールし、pyvenvでpython3の設定をしたのですが、エラーが変わらずでした...パスは現在このようになっています。
    python3 is /Users/you/.pyenv/shims/python3

    キャンセル

  • 2017/10/05 11:07 編集

    2017年9月28日時点だと、venv仮想環境で動かしてるpythonが動いていると認識できます。

    でも入門で仮想環境使うかな? というのが個人的な感想ですが、ばっちり使ってますね。
    https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/django_installation/

    ですので、とりあえず私のこの回答では、
    「MacにインストールされてるPythonとは別のPythonが使われている」
    ということは説明できます。

    で、ちょっと気になったのが、その仮想環境でデフォルトで使われているPythonのバージョンが気になりました。

    type python

    と仮想環境で実行したらなんと表示されますか?

    キャンセル

0

django-admin makemigrations blog
とすると記載のエラーがでます。

python manage.py makemigrations blog
と実行しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7482questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    983questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。