Python - os.chemin d'accès n'existe pas: AttributeError: 'module' objet n'a pas d'attribut 'chemin'
Enquêter sur une étrange erreur que j'ai commencé à avoir tous d'un coup avec gdb-python, j'ai réduit à ceci:
C:\Users\User>python -i
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> dir(os.path)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'path'
>>> dir(os)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
À la recherche par le biais de certains autres 'module' object has no attribute
réponses, le plus commun suggestion est qu'il doit y avoir un autre voyou os.py
quelque part dans sys.path
, et qu'il était chargé, plutôt que de l'intégré dans un. Mais j'ai vérifié dans PYTHONPATH
variable d'environnement, et dans le répertoire courant, et il n'y avait pas d'autres os.py
.
J'ai donc cherché un moyen de trouver le nom du fichier où l'entité a été défini, et sans surprise, Python a une telle installation dans la forme de la inspect
module.
>>> inspect.getsourcelines(os)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Programs\Python273\lib\inspect.py", line 690, in getsourcelines
lines, lnum = findsource(object)
File "C:\Programs\Python273\lib\inspect.py", line 527, in findsource
sourcefile = getsourcefile(object)
File "C:\Programs\Python273\lib\inspect.py", line 451, in getsourcefile
if os.path.exists(filename):
AttributeError: 'module' object has no attribute 'path'
Donc inspect
a été en s'appuyant sur os.path
, et puis j'ai manqué d'idées.
Je n'ai pas installé quelque chose de nouveau récemment. La seule chose qui s'est passé était un arrêt forcé que j'avais à faire, ce qui pourrait avoir coïncidé avec l'exécution d'un script Python, depuis que j'ai été l'exécution d'un court script Python dans une boucle à plusieurs reprises lorsque la machine est devenu insensible et l'arrêt forcé a eu lieu.
OriginalL'auteur Evgeni Sergeev | 2014-02-08
Vous devez vous connecter pour publier un commentaire.
Après perdre beaucoup de temps, j'ai pensé à elle. Recherche dans le cadre de
C:\Programs\Python273\Lib
, j'ai remarqué queos.pyc
était beaucoup plus petit en taille queos.py
etos.pyo
, alors que pour les autres modules,abc.pyc
est de taille égale àabc.pyo
et légèrement plus petit queabc.py
. Regarde à l'intérieur deos.pyc
, il ne contenait que:(C'est qu'il s'affiche dans Vim.) (Note: le
t
à la fin deos.pyt
ne fait pas partie du nom de fichier.)La suppression de ce fichier (et de deux autres
.pyc
les fichiers avec la même histoire) a résolu le problème.Donc ce qui s'est passé doit être que
python
était recompileros
enos.pyc
pour une raison quelconque (pourquoi? si c'est déjà compilé avant?) et a la sortie de la première partie du fichier (qui était valable en tant que fichier lui-même), puis l'arrêt forcé s'est produite avant que l'on ait une chance à la sortie du repos. C'est donc un exemple de ce qui est frustrant, les problèmes qui se produisent lorsque les opérations ne sont pas atomiques.Il se trouve aussi que j'ai pu avoir suivi vers le bas plus vite, parce que faire des
fonctionne même quand
os.path
n'est pas disponible.os.__file__
.OriginalL'auteur Evgeni Sergeev
J'ai le même problème et C:\Python27\Lib\os.py n'a pas readlink() la fonction à tous. Cherché la Lib et a trouvé 6 pas il y il est utilisé, mais pas de définition:
Python 2.7 (r27:82525, Juil. 4 2010, 09:01:59) [ MSC v. 1500 32 bits (Intel)] sur win32
OriginalL'auteur ZXX