Como abrir scripts python diretamente digitando o nome deles no terminal (Mac OS X)

1

Estou trabalhando para instalar o django e executá-lo no meu sistema.

Eu tenho um problema, no entanto, neste tutorial , a criação de um projeto é explicada executando o comando

django-admin.py startproject mysite

Meu problema é que isso não funciona. Eu mudei para o diretório onde o django-admin.py está localizado e executei o comando

chmod +x django-admin.py

sem resultados. Eu tentei adicionar o diretório com o arquivo para o meu caminho sem resultados. Acabei consertando meu problema com esse comando

python /location/of/django-admin.py startproject mysite

que rendeu o resultado que eu esperava. Meu problema é: O que eu preciso para alterar / configurar tal comando

django-admin.py startproject mysite

seria suficiente?

Aqui estão algumas experiências:

21:09~/Desktop/HI/NSN/Polls > django-admin.py startproject mysite
-bash: django-admin.py: command not found
21:09~/Desktop/HI/NSN/Polls > ./django-admin.py startproject mysite
-bash: ./django-admin.py: No such file or directory
21:09~/Desktop/HI/NSN/Polls > python django-admin.py startproject mysite
python: can't open file 'django-admin.py': [Errno 2] No such file or directory
21:09~/Desktop/HI/NSN/Polls > /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1
-bash: /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: /opt/local/bin: bad interpreter: Permission denied
21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1Password:
sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied
21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied
21:09~/Desktop/HI/NSN/Polls > python /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1
21:09~/Desktop/HI/NSN/Polls > ls
mysite prufa1

Edição final: O problema está resolvido, veja a resposta de Ian C para a solução certa. Obrigado a todos por me ajudarem, isso foi muito rápido!

    
por Haffi112 01.03.2011 / 21:44

4 respostas

3

Há uma versão um pouco mais genérica da dica @Matt Jenkins hashbang (! #) que você pode usar para tornar o script um pouco mais portátil. Certifique-se de que a primeira linha do arquivo seja:

#!/usr/bin/env python
...everything else...

Isso diz "procure um programa chamado python pesquisando meu PATH e execute o restante desse script com esse programa".

Você também precisará definir o bit de execução no script com:

chmod +x django-admin.py

Eu menciono isso para ser completo, observando que você já fez isso.

Finalmente, a variável PATH na verdade não contém . (o diretório de trabalho atual). Isso é uma precaução de segurança e eu não recomendo mudar essa configuração (isso evita que você chame ./rm quando você quis dizer o rm do shell, por exemplo). Então você precisa chamar o script com:

 ./django-admin.py startproject mysite

Isso diz "procure no diretório de trabalho atual por django-admin.py" em vez de "pesquisar a variável PATH ", que é o que acontece se você omitir a parte ./ .

    
por 01.03.2011 / 22:15
1

A primeira linha do arquivo deve conter o programa que executa o script prefixado por #! (conhecido como hashbang)

Por exemplo:

#!/path/to/python
...python code follows...

Em seguida, você pode definir o bit executável no arquivo e o shell o interpretará como um script usando o programa encontrado na primeira linha como o interpretador.

Isso geralmente é usado com scripts de shell, por exemplo:

#!/bin/sh

for FILE in 'ls'
{
    echo "Filename: ${FILE}"
}
    
por 01.03.2011 / 21:53
0
  1. Selecione o arquivo no Localizador clicando nele uma vez.

  2. No menu Arquivo , selecione Obter informações .

  3. Na janela Informações, clique no triângulo ao lado de " Abrir com :" para expandir essa seção da janela.

  4. No menu suspenso exibido, selecione o aplicativo que você deseja usar para abrir o arquivo.

- Fonte: Universidade de Indiana - KB: Como atribuir um aplicativo para abrir determinado arquivo tipos?

    
por 01.03.2011 / 21:47
0

Quando você muda as permissões do arquivo django-admin.py, você tem que escrever isto:

sudo chmod + x django-admin.py

Funciona para mim

    
por 29.06.2012 / 04:05