[PYTHON] TypeError: resolution () a obtenu un argument de mot-clé inattendu 'strict' dans Django

introduction

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.

Détails de l'erreur

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.

Solution

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.

référence

Recommended Posts

TypeError: resolution () a obtenu un argument de mot-clé inattendu 'strict' dans Django
Resolve TensorFlow TypeError: __init __ () a obtenu un argument de mot-clé inattendu "syntaxe" sur Mac
J'ai eu une erreur dans vim ou zsh dans la série Python 3.7
TypeError: __init__ () a obtenu un argument de mot-clé inattendu Que faire avec 'état'
J'ai eu une erreur en essayant d'exécuter Hello World en langue Go
Je souhaite envoyer un message d'erreur en japonais avec le formulaire de changement de mot de passe django
J'ai eu une erreur indiquant que Python n'a pas pu lire settings.ini
J'obtiens une erreur d'importation avec Python Beautiful Soup
J'obtiens une erreur lorsque je mets opencv dans pyautoGUI
J'ai eu une erreur lors de l'utilisation de Tensorboard avec Pytorch
J'ai eu un AttributeError en me moquant de la méthode ouverte en python
J'ai eu une erreur lorsque j'ai exécuté composer global require laravel / installer
Quand j'obtiens une erreur avec Pylint sur Windows Atom
J'ai eu une erreur lorsque j'ai exécuté meteor add accounts-password
Que faire si PyInstaller3.5 provoque une erreur dans Python3.8 (TypeError: un entier est requis (obtenu les octets de type))