2012-02-15 3 views
0

Ну, я играю с pyYAML. Я установил версию для Python 2.7 с установщиком Windows.pyYAML - Ошибка - Ошибка атрибута: нет атрибута «load»

импортирует просто отлично:

import yaml 

и не приводит к возникновению ошибок.

Но, если я это сделать:

import yaml 

f = open("sets.yml") 
dataMap = yaml.load(f) 
f.close() 

print dataMap 

Он выдает ошибку атрибута и говорит «модуль» объект не имеет атрибут «нагрузки».

Я попробовал сброс и получил то же самое. Также такая же вещь для импорта:

from yaml import load 

У кого-нибудь есть идеи?

О, а также, я думал, что это было странно - всякий раз, когда я запускаю сценарий, он создал .pyc. Почему это?

+0

Для '.pyc' см. Http://stackoverflow.com/questions/2998215/if-python-is-interpreted-what-are-pyc-files – charlax

+0

Для YAML, какую библиотеку вы используете? Есть ли файл yaml.py в вашей папке? – charlax

ответ

6

Если другой файл с именем yaml.py на вашем sys.path до фактической библиотеки PyYAML, вы будете забрать и импорт, что yaml.py файл , Это включает в себя, если вы назвали свой собственный файл yaml.py.

Тот факт, что вы получаете yaml.pyc в своем каталоге, указывает, что это именно то, что вы делаете. Оператор yaml import загружается в ваш собственный файл yaml.py, что заставляет интерпретатор скомпилировать его для yaml.pyc для более эффективной работы.

Переименуйте файл yaml.py в свой каталог. Не называйте ни один файл python, с которым вы работаете, с тем же именем, что и любой существующий модуль python, который вы используете, как правило.

+1

А, спасибо. Я сделал это раньше. Я думаю, что это происходит, потому что я не хочу называть его «test.py», потому что мой рабочий стол зацикливается на вещах вдоль этих строк при тестировании нового модуля. Надеюсь, я это запомню. – musketeer925

0

PyYAML-3,10 имеет нагрузку():

[email protected]:/usr/src/clusterFix$ easy_install pyyaml 
Searching for pyyaml 
Reading http://pypi.python.org/simple/pyyaml/ 
Reading http://pyyaml.org/wiki/PyYAML 
Best match: PyYAML 3.10 
Downloading http://pyyaml.org/download/pyyaml/PyYAML-3.10.zip 
Processing PyYAML-3.10.zip 
Running PyYAML-3.10/setup.py -q bdist_egg --dist-dir /tmp/easy_install-2PnFkZ/PyYAML-3.10/egg-dist-tmp-kCMq7S 
build/temp.linux-i686-2.6/check_libyaml.c:2:18: fatal error: yaml.h: No such file or directory 
compilation terminated. 

libyaml is not found or a compiler error: forcing --without-libyaml 
(if libyaml is installed correctly, you may need to 
specify the option --include-dirs or uncomment and 
modify the parameter include_dirs in setup.cfg) 
zip_safe flag not set; analyzing archive contents... 
Adding PyYAML 3.10 to easy-install.pth file 

Installed /usr/local/lib/python2.6/dist-packages/PyYAML-3.10-py2.6-linux-i686.egg 
Processing dependencies for pyyaml 
Finished processing dependencies for pyyaml 
[email protected]:/usr/src/clusterFix$ python 
Python 2.6.7 (r267:88850, Jun 13 2011, 22:03:32) 
[GCC 4.6.1 20110608 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import yaml 
>>> dir(yaml) 
['AliasEvent', 'AliasToken', 'AnchorToken', 'BaseDumper', 'BaseLoader', 'BlockEndToken', 'BlockEntryToken', 'BlockMappingStartToken', 'BlockSequenceStartToken', 'CollectionEndEvent', 'CollectionNode', 'CollectionStartEvent', 'DirectiveToken', 'DocumentEndEvent', 'DocumentEndToken', 'DocumentStartEvent', 'DocumentStartToken', 'Dumper', 'Event', 'FlowEntryToken', 'FlowMappingEndToken', 'FlowMappingStartToken', 'FlowSequenceEndToken', 'FlowSequenceStartToken', 'KeyToken', 'Loader', 'MappingEndEvent', 'MappingNode', 'MappingStartEvent', 'Mark', 'MarkedYAMLError', 'Node', 'NodeEvent', 'SafeDumper', 'SafeLoader', 'ScalarEvent', 'ScalarNode', 'ScalarToken', 'SequenceEndEvent', 'SequenceNode', 'SequenceStartEvent', 'StreamEndEvent', 'StreamEndToken', 'StreamStartEvent', 'StreamStartToken', 'TagToken', 'Token', 'ValueToken', 'YAMLError', 'YAMLObject', 'YAMLObjectMetaclass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '__with_libyaml__', 'add_constructor', 'add_implicit_resolver', 'add_multi_constructor', 'add_multi_representer', 'add_path_resolver', 'add_representer', 'compose', 'compose_all', 'composer', 'constructor', 'dump', 'dump_all', 'dumper', 'emit', 'emitter', 'error', 'events', 'load', 'load_all', 'loader', 'nodes', 'parse', 'parser', 'reader', 'representer', 'resolver', 'safe_dump', 'safe_dump_all', 'safe_load', 'safe_load_all', 'scan', 'scanner', 'serialize', 'serialize_all', 'serializer', 'tokens'] 
Смежные вопросы