O pacote Python funciona apenas como admin

1

No Mac OSX 10.6 eu instalei o pacote music21 para python usando

python setup.py install

no diretório nomeado em

distutils.sysconfig.get_python_lib()

que foi

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages

Agora, se eu executo o Python como administrador,

sudo python

então eu posso pegar o pacote:

>> import music21

mas se eu executar o Python sem privilégios de administrador, o Python não poderá encontrar o pacote. Alguém já encontrou este problema? Verifiquei se os arquivos da biblioteca estão no lugar certo (ou seja, um subdiretório music21 of site-packages ). Se eu fizer

chmod -R a+r *

neste diretório, ele encontra o pacote, mas lança uma exceção durante a importação. Alguém tem algum conselho?

EDIT: Esta é a saída do Python:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/music21/__init__.py", line 80, in <module>
    import base
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/music21/base.py", line 60, in <module>
    from music21 import tie
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/music21/tie.py", line 16, in <module>
    from music21.musicxml import translate as musicxmlTranslate
ImportError: No module named musicxml

Parece-me que não estou abordando tudo que precisa ser chmodado. Não deveria haver uma maneira simples que configura tudo para um usuário comum?

    
por Jeffrey 24.09.2011 / 08:07

1 resposta

1

Em sistemas Unix, o privilégio r em um diretório permite ver as propriedades do próprio diretório, mas é necessário que o privilégio x tenha permissão para listar seu conteúdo. Portanto, tente fazer o seguinte:

chmod -R a+rX *

Em contraste com a+x (x minúscula), que significa "tornar todos os arquivos executáveis e compatíveis com todos", a+X (maiúscula x) significa "tornar todos os arquivos executáveis e compatíveis com todos se o privilégio x já estiver definido para pelo menos um usuário, grupo e outro ".

Se, portanto, os privilégios forem, por exemplo, rw-r--r-- , eles não serão alterados, mas se forem rw-r-xr-- , eles se tornarão rwxr-xr-x (porque x foi definido para o grupo) .

    
por 24.09.2011 / 20:32

Tags