Djangogirlsのチュートリアルでmodels.py が実行できない
受付中
回答 4
投稿
- 評価
- クリップ 0
- VIEW 2,673
前提・実現したいこと
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/'
試したこと
-
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
- 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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+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 (これがちょっと変?)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
Djangogirlsチュートリアルどおりに最初から最後まで全部実行できた者です。
Django、Pythonは初心者レベルで見よう見まねで取り組んだだけなので、的外れの回答かもしれないことは、前置きしておきます。
質問文のコードで気になったとは、以下の部分です。
#models.py
!/usr/bin/python
Djangogirlsの説明に
blog/models.pyを開いて全部削除し、下のコードを書きます:
とあるので、私が実行したときは、文面どおりこの部分は削除しています。(それが正しいかどうか不明ですが。)
また、他の方指摘されている「settings.py」の場所ですが、多分、ここに貼り付けとき表示がずれて「djangogirls」直下のように見えてるだけです。
実際は、「djangogirls>mysite>settings.py」ですよね?
チュートリアルどおりだとしたら、mysite内で問題ないかと思います。
(チュートリアルにかかれているやり方が特殊だとしたら私にはわかりません。)
検討違いのことを言ってるかもしれませんが、参考までに。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
シェバンのパスが気になります。
Python3はどのようにインストールしましたでしょうか?
もしPython3パスが分からない場合は、以下コマンドを実行して、Python3のパスを確認してください。
type python3
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
django-admin makemigrations blog
とすると記載のエラーがでます。
python manage.py makemigrations blog
と実行しましょう。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.98%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/09/28 20:32
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
2017/10/01 17:29 編集
そちらのディレクトリを参考に追記したのでこのようにファイルを移動して
export DJANGO_SETTINGS_MODULE=djangogirls.settings
してから実行してみてください。
参考
https://docs.djangoproject.com/ja/1.11/intro/tutorial01/
2017/10/02 17:06
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
を実行したとろ、
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", 〜)
を正しく設定しているとエラー消えるみたいです。