Eu não instalei o Python corretamente. Quando segui as instruções do Crast em link , então eu pude instalar o PyYAML sem problemas. (Sem necessidade de virtualenv.)
Instalei o Python 2.6.4 em (um subdiretório em) meu diretório pessoal em uma máquina Linux com Python 2.3.4 pré-instalado, porque eu preciso executar algum código que eu decidi exigir muito trabalho para torná-lo executado em 2.3.4. (Eu não estou na lista de sudoes para essa máquina.)
Eu esperava poder executar ~/Python-2.6.4/python setup.py install
(do diretório PyYAML no meu diretório inicial, onde eu descompactei o
Fontes PyYAML) e seria inteligente o suficiente para instalá-lo no meu
instalação local do Python 2.6.4. Mas isso não. (Veja o P.S.)
É possível instalar o PyYAML na minha instalação local do Python, para que "import yaml" funcionará quando invoco o Python? Se sim, como faço isso?
P.S. Aqui está a saída quando eu corri ~/Python-2.6.4/python setup.py install
:
running install
running build
running build_py
creating build/lib.linux-ppc64-2.6
creating build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/composer.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/nodes.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/dumper.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/resolver.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/events.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/emitter.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/error.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/loader.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/cyaml.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/scanner.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/__init__.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/serializer.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/reader.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/representer.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/constructor.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/tokens.py -> build/lib.linux-ppc64-2.6/yaml
copying lib/yaml/parser.py -> build/lib.linux-ppc64-2.6/yaml
running build_ext
creating build/temp.linux-ppc64-2.6
checking if libyaml is compilable
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -fPIC -I/home/dspitzer/Python-2.6.4/Include
-I/home/dspitzer/Python-2.6.4 -c
build/temp.linux-ppc64-2.6/check_libyaml.c -o
build/temp.linux-ppc64-2.6/check_libyaml.o
build/temp.linux-ppc64-2.6/check_libyaml.c:2:18: yaml.h: No such file
or directory
build/temp.linux-ppc64-2.6/check_libyaml.c: In function 'main':
build/temp.linux-ppc64-2.6/check_libyaml.c:5: error: 'yaml_parser_t'
undeclared (first use in this function)
build/temp.linux-ppc64-2.6/check_libyaml.c:5: error: (Each undeclared
identifier is reported only once
build/temp.linux-ppc64-2.6/check_libyaml.c:5: error: for each function
it appears in.)
build/temp.linux-ppc64-2.6/check_libyaml.c:5: error: syntax error
before "parser"
build/temp.linux-ppc64-2.6/check_libyaml.c:6: error: 'yaml_emitter_t'
undeclared (first use in this function)
build/temp.linux-ppc64-2.6/check_libyaml.c:8: warning: implicit
declaration of function 'yaml_parser_initialize'
build/temp.linux-ppc64-2.6/check_libyaml.c:8: error: 'parser'
undeclared (first use in this function)
build/temp.linux-ppc64-2.6/check_libyaml.c:9: warning: implicit
declaration of function 'yaml_parser_delete'
build/temp.linux-ppc64-2.6/check_libyaml.c:11: warning: implicit
declaration of function 'yaml_emitter_initialize'
build/temp.linux-ppc64-2.6/check_libyaml.c:11: error: 'emitter'
undeclared (first use in this function)
build/temp.linux-ppc64-2.6/check_libyaml.c:12: warning: implicit
declaration of function 'yaml_emitter_delete'
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)
running install_lib
creating /usr/local/lib/python2.6
error: could not create '/usr/local/lib/python2.6': Permission denied
Verifique as opções --home
ou --user
ou --prefix
de setup.py. Estes controlam onde os arquivos são instalados.
A partir do seu log de construção, não sei se esse é o problema. Parece que não está conseguindo encontrar o yaml.h. Isso é parte das fontes do PyYAML? Ou é parte da libyaml que o PyYAML requer, mas você esqueceu de instalar?