pip cria um diretório para cada pacote em /usr/local/lib/python2.7/dist-packages/ (substitua 2.7 para outras versões) para manter todos os arquivos necessários, portanto, é necessário ter permissão suficiente para criar esse diretório.
No seu caso, você não tem permissão suficiente para criar o diretório /usr/local/lib/python2.7/dist-packages/ply , por isso que pip está falhando.
Para resolver isso, você pode usar sudo :
sudo pip install ply
Ou melhor, você pode se adicionar ao grupo staff , pois os diretórios relevantes criados por pip sob /usr/local/lib/ são de propriedade do usuário root e do grupo staff (com setgid ).
Então você pode fazer:
sudo usermod -a -G staff username
Agora faça logout e faça login novamente, agora o seguinte deve funcionar:
pip install ply