Lors du déploiement de l'application Django créée sur AWS EC2 (Ubuntu16.04), j'ai rencontré l'erreur suivante, je vais donc noter le remède.
Après git clone
le projet Django dans Ubuntu, j'ai lancé python3 manage.py make migrations
TypeError: resolve() got an unexpected keyword argument 'strict'
Une erreur a été affichée.
settings.py
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
Il semble qu'une phrase de soit une erreur. Ceci est la description pour obtenir le chemin absolu du répertoire de base où se trouve Django manage.py.
Je me suis demandé pourquoi je ne me suis pas dérangé avec cela, et j'ai trouvé que la description de cette partie avait changé entre Django 3.1 et les versions ultérieures et avant cela.
Cette fois, je développais localement avec Python 3.8 + Django 3.1, mais j'ai confirmé que Python 3.5 + Django 2.2 est installé sur Ubuntu, et il semble qu'il y ait une erreur due à la différence de version.
L'argument strict de la méthode de résolution semble avoir été ajouté depuis python3.6, c'est donc probablement la cause principale.
A l'origine, il était nécessaire de développer selon la version de Django dans Ubuntu, mais cette fois je voulais juste essayer de le déployer facilement, donc je changerai settings.py à la description selon Django 2.2.
settings.py
#C'est Django 3.1 ou version ultérieure
# from pathlib import Path
# BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
#Description traditionnelle
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
En faisant cela, l'erreur a été résolue avec succès et la migration a réussi.
Je pense que la gestion des versions de langage et de framework est particulièrement importante dans le développement, je voudrais donc faire attention à l'avenir.
Recommended Posts