Histoire d'erreur étrange et horrible de Python

Note) C'est une histoire pour les débutants de faire attention aux spécifications d'importation.

Quand je testais une certaine fonction en Python.

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.

Ici, je remarque quelque chose d'étrange.

  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.

Après tout

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

Histoire d'erreur étrange et horrible de Python
L'histoire de Python et l'histoire de NaN
Une histoire sur Python pop and append
Gestion des erreurs Python
Une histoire sur la modification de Python et l'ajout de fonctions
[python] Compresser et décompresser
Astuces Python et Numpy
[Python] pip et roue
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Itérateur et générateur Python
Erreur Python non implémentée
Erreur python d'aujourd'hui: tué
Paquets et modules Python
Intégration Vue-Cli et Python
[Python] Erreur de type: résumé des causes et des solutions pour "Aucun type"
petite histoire de python
exécution et erreur de pytube
Erreur de Golang et panique
entrée et sortie python
Python et Ruby se séparent
Python asyncio et ContextVar
[Python] pour une erreur d'instruction
J'ai eu une erreur dans vim ou zsh dans la série Python 3.7
Programmation avec Python et Tkinter
Python: variables de classe et d'instance
Série Python 2 et série 3 (édition Anaconda)
Python et matériel - Utilisation de RS232C avec Python -
Indentation Python et format de chaîne
division des nombres réels python (/) et division des nombres entiers (//)
Installez Python et Flask (Windows 10)
Histoire lors de l'itération d'un tuple python
À propos des objets et des classes Python
À propos des variables et des objets Python
Apache mod_auth_tkt et Python AuthTkt
Å (Ongustorome) et NFC @ Python
Apprenez à connaître les packages et les modules Python
# 2 [python3] Séparation et commentaire
Copie superficielle Python et copie profonde
Mémo tranche python et rubis
Installation de Python et grammaire de base
J'ai comparé Java et Python!
[Python] Mémorandum sur l'évitement des erreurs SQLAlchemy
Histoire de trébucher avec le tableau Python
À propos de Python, len () et randint ()
À propos de la date et du fuseau horaire Python
Construction d'environnement Python et TensorFlow
Variables de classe et d'instance Python
[Python] Python et sécurité-① Qu'est-ce que Python?
métaclasse python et déclaration sqlalchemy
Erreur lors de la lecture avec python
#python python évitement des erreurs de syntaxe japonaise
Implémentation de Fibonacci et des nombres premiers (python)
bases de python: conditions et itérations
Histoire addictive GAE + python + Django
Opérateur de bits Python et somme logique
Module de débogage et de test Python
Liste Python et tapples et virgules
Variables Python et ID d'objet
Notation et générateur d'inclusion de liste Python