pyYAML - Ошибка - Ошибка атрибута: нет атрибута «загрузить» - PullRequest
0 голосов
/ 15 февраля 2012

Ну, я играю с pyYAML. Я установил версию для Python 2.7 с помощью установщика Windows.

Импортируется очень хорошо:

import yaml

и не выдает ошибок.

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

import yaml

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

print dataMap

Выдает ошибку атрибута и говорит, что у объекта 'module' нет атрибута 'load'.

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

from yaml import load

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

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

Ответы [ 2 ]

8 голосов
/ 15 февраля 2012

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

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

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

0 голосов
/ 15 февраля 2012

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

jcomeau@intrepid:/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
jcomeau@intrepid:/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']
...