web-dev-qa-db-fra.com

ModuleNotFoundError: aucun module nommé «modèles»

J'ai une application Django très simple que j'essaie de déployer sur heroku, mais elle continue de planter. Tout fonctionne bien sur ma machine locale, mais pas sur heroku

voici l'erreur que je reçois (coupée aux parties pertinentes):

File "/app/hello/admin.py", line 4, in <module>
2017-07-10T20:12:27.482194+00:00 app[web.1]:     import models
2017-07-10T20:12:27.482195+00:00 app[web.1]: ModuleNotFoundError: No module 
named 'models'

J'utilise la structure de répertoire par défaut Django:

-python-mise en route

--Bonjour

---init. py

---admin.py (c'est là que se trouve l'erreur)

---models.py (c'est le fichier que j'essaye d'importer)

---tests.py

---views.py

Cela fonctionne très bien sur ma machine locale. Suis-je en train de l'importer mal? Honnêtement, je ne sais même pas par où commencer. Je n'ai aucun problème sur aucun de mes autres projets Django hébergés sur Heroku, juste celui-ci.

voici la partie pertinente de admin.py qui génère l'erreur:

from Django.contrib import admin
from Django import forms

import models

# Register your models here.
class BasicInfoCollectionForm(forms.ModelForm):
    class Meta():
        model = models.VolunteerBasicInfo
        fields = ('removed for brevity')

Toute aide serait grandement appréciée

edit: Je viens de réaliser que cette application utilise python v3.6 sur heroku, alors que je faisais du dev avec python 2.7 sur ma machine locale).

5
user1626536

Vous devez utiliser l'importation relative

from . import models

Ou il est préférable d'importer des modèles que vous utiliserez, car ils n'entreront pas en collision visuelle avec Django.db.models.

from Django import forms

from .models import VolunteerBasicInfo

class BasicInfoCollectionForm(forms.ModelForm):
    class Meta:
        model = VolunteerBasicInfo
        ...

Vous n'avez pas non plus besoin d'utiliser des crochets avec class Meta.

9
vishes_shell