Note) C'est une histoire pour les débutants de faire attention aux spécifications d'importation.
L'exemple de code suivant qui fonctionnait hier a soudainement commencé à générer une erreur. L'environnement est pyenv + pipenv + python3.7 + SDK Google Cloud (Ceci est le code à écrire sur Google Firestore)
insert.py
from google.cloud import firestore
db = firestore.Client()
db.collection(u'users').document().set({
u'first': u'oda',
u'last': u'nobunaga',
u'born': 1534
})
Le contenu de l'erreur est le suivant
>> pipenv run insert
Loading .env environment variables...
Traceback (most recent call last):
File "insert.py", line 1, in <module>
from google.cloud import firestore
File "/mnt/v01/workspace/sandbox-python-firestore/.venv/lib/python3.7/site-packages/google/cloud/firestore.py", line 18, in <module>
from google.cloud.firestore_v1 import __version__
File "/mnt/v01/workspace/sandbox-python-firestore/.venv/lib/python3.7/site-packages/google/cloud/firestore_v1/__init__.py", line 17, in <module>
from pkg_resources import get_distribution
File "/mnt/v01/workspace/sandbox-python-firestore/.venv/lib/python3.7/site-packages/pkg_resources/__init__.py", line 33, in <module>
import platform
File "/home/dev-user/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/platform.py", line 116, in <module>
import sys, os, re, subprocess
File "/home/dev-user/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/subprocess.py", line 140, in <module>
import select
File "/mnt/v01/workspace/sandbox-python-firestore/select.py", line 3, in <module>
db = firestore.Client()
AttributeError: module 'google.cloud.firestore' has no attribute 'Client'
Je pense que les gens qui aiment Python sur une base régulière ressentent un peu, mais j'ai un mauvais pressentiment car c'est une erreur d'importation dans la situation où pyenv et pipenv sont utilisés en même temps.
Mais hier, cela fonctionnait bien. Je suis également inquiet pour gcloud auth.
File "/mnt/v01/workspace/sandbox-python-firestore/select.py", line 3, in <module>
db = firestore.Client()
Pourquoi,
Il y a ./select.py que vous ne devriez pas appeler. Certainement, j'ai créé select.py dans ./ comme exemple de code plus tôt.
Après avoir supprimé ce ./select.py, le programme fonctionne correctement.
Il semble que select.py dans le répertoire courant a été appelé à partir de subprocess.py qui a été utilisé pendant le traitement.
Cette fois, c'était bien car c'était un exemple de programme que j'écrivais moi-même, mais je me demandais s'il était nécessaire de faire attention au nom du fichier, en particulier lors du développement d'une équipe avec Python, et c'était une erreur qu'une chose froide se soit déroulée sur ma colonne vertébrale.
Recommended Posts