Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Importar programas

Boa noite! Estou tendo dificuldades para importar programar no terminal Mac. Por exemplo, quando vou importar o arquivo que criei (app.py) eu coloco cd /Users/larissvarjao/Documents/OneDrive/Developer/Python e depois python app.py. O arquivo roda corretamente. O problema é que não consigo rodar antes o python e importar o regex (import re) para poder executar o programa corretamente, pois ele da erro. Ou quando tento importar o regex depois de ter aberto o app, pois ele tambem da erro. Resumindo: não consigo abrir o regex depois de ter aberto o aplicativo, nem abrir o aplicativo depois de ter importado o python e o regex. Estou realizando o que de maneira equivocada?

6 respostas

Coloca aqui o conteudo de app.py pra gente ver.

Olá, Larissa. Não sei se entendi bem a sua pergunta (poste o código e o erro se a minha resposta passar longe).

Se o código onde você executa a chamada para o módulo re está no seu arquivo app.py você deve colocar import re em qualquer linha antes da que você utiliza o módulo de regex e iniciar o programa com python app.py, ou se quiser rodar o programa e entrar no console do python: python -i app.py (i = interativo). Mas isso vai rodar o programa primeiro e depois abrir o terminal, então não pode deixar para fazer o import depois.

Ou se você não estiver chamando o re no app.py, mas no console do python, entre no console python direto (para isso usar o comando python) e digitar o import re no console. Outra coisa é que você não deve importar o python. Se o python estiver rodando, ele já está "importado".

Era isso?

solução!

Tentei fazer da forma que falou Skywalker e não obtive sucesso. Devo estar digitando algum comando errado e não sei qual. Poderia me descrever exatamente o que devo digitar no terminal pra ele rodar? Levando em consideracao que meu arquivo nao esta no desktop?Abaixo vou mostrar exatamente o que aparece no terminal quando tento importar. Tentando importar o arquivo depois de importar o python e a funcao re: "Last login: Mon May 2 23:17:52 on ttys000

Macbook-Pro-Larissa:~ larissvarjao$ python

Python 2.7.10 (default, Jul 14 2015, 19:46:27)

[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information.

import re

cd /Users/larissvarjao/Documents/OneDrive/Developer/Python Traceback (most recent call last):

File "", line 1, in NameError: name 'cd' is not defined

"

Tentando importar o arquivo e depois a funcao re:

" Last login: Mon May 2 23:23:15 on ttys000

Macbook-Pro-Larissa:~ larissvarjao$ cd /Users/larissvarjao/Documents/OneDrive/Developer/Python

Macbook-Pro-Larissa:Python larissvarjao$ python app.py

Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar

python

Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar

import re

Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar

1

Digite o nome: Denise

Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar Felipe

Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar 6

Digite o nome que deseja procurar Felipe

Traceback (most recent call last): File "app.py", line 67, in menu()

File "app.py", line 63, in menu procurar_regex(nomes)

File "app.py", line 41, in procurar_regex resultado = re.findall(regex, nomes_conc)

NameError: global name 're' is not defined Macbook-Pro-Larissa:Python larissvarjao$"

Os erros que acontecem sao esses, por que to rodando de alguma forma errada. O arquivo contem o re, segue:

"# -- coding: UTF-8 --

def cadastrar(nomes): print 'Digite o nome:' nome = raw_input() nomes.append(nome)

def listar(nomes): print 'Listando nomes: ' for nome in nomes: print nome

def remover(nomes): print 'Digite o nome a ser removido' nome = raw_input() nomes.remove(nome) print 'Lista de nomes atualizadas: ' print nomes

def alterar(nomes): print 'Digite o nome que deseja alterar' alterar = raw_input() if (alterar in nomes): posicao = nomes.index(alterar) print 'Digite novo nome' novo_nome = raw_input() nomes[posicao] = novo_nome

def procurar(nomes): print 'Digite nome para procurar-mos' pesquisa = raw_input() if(pesquisa in nomes): print 'Ele existe na lista!' else: print 'Não existe na lista! :/'

def procurar_regex(nomes): print 'Digite o nome que deseja procurar' regex = raw_input() nomes_conc = ' '.join(nomes) resultado = re.findall(regex, nomes_conc) print 'Achamos %s' %(resultado)

def menu(): nomes = [] comando = '' while(comando != '0'): print 'Digite 1 para cadastrar, 2 listar, 3 remover, 4 alterar, 5 procurar e 6 procurar regex e 0 para parar' comando = raw_input() if(comando == '1'): cadastrar(nomes) if(comando == '2'): listar(nomes) if(comando == '0'): print 'FIM' if(comando == '3'): remover(nomes) if(comando == '4'): alterar(nomes) if(comando == '5'): procurar(nomes) if(comando == '6'): procurar_regex(nomes)

menu()"

Oi, Larrisa. Agora acho que matei a charada. O cd é o comando que você vai usar no terminal, antes de entrar no console do python, para ir para o diretório que você quer. Então, se o arquivo está no Desktop o comando é:

cd Desktop

Só que se botar ele no console do python vai dar erro porque isso não é um comando do python.

Por isso que você viu o erro:

NameError: name 'cd' is not defined

Ou seja, vai ser o primeiro comando que você vai digitar quando abrir o terminal.

Agora veja esse erro:

File "app.py", line 41, in procurar_regex resultado = re.findall(regex, nomes_conc)
NameError: global name 're' is not defined Macbook-Pro-Larissa:Python larissvarjao$"

Aconteceu porque na linha 41 você usa o módulo re antes de importar. A solução para isso é botar o import lá em cima.

O começo do seu código deve ficar assim:

# -- coding: UTF-8 --
import re

Nesse caso não adianta tentar importar no console porque a chamada acontece no arquivo.

Felizmente, acho que resolvendo essas duas questões o código vai rodar direito porque são os únicos erros que apareceram.

Espero que agora funcione, mas se continuar com problema posta de novo com os novos erros.

Skywalker, MUITO obrigada! Consegui rodar perfeitamente. Quando fui marcar como solução, sem querer coloquei a minha resposta. Desculpaaaa.. Você quer que eu abra outro forum e coloque a sua como solução? De qualquer forma, muito obrigada mesmo!! Rodou direitinho!

Larissa, não se preocupe com isso não. O importante é que deu tudo certo! =)