2017-03-25 1 views
0

j'appelle une fonction de functions.py dans work.py, qui fonctionne très bien:python: fonction appelée à partir d'autres modules fichier a besoin

from functions import get_ad_page_urls 

La fonction get_ad_page_urls utilise A.O. le module requests.

Maintenant, si oui ou non j'importer le module requests dans work.py, quand je lance la fonction appelée à work.py, il donne une erreur: NameError: name 'requests' is not defined.

J'ai défini get_ad_page_urls dans functions.py y compris le module, comme si,

def get_ad_page_urls(): 
    import requests 
    <rest of function> 

ou à l'exclusion du module, comme si,

import requests 
def get_ad_page_urls(): 
    <rest of function> 

mais il n'a pas d'importance, l'NameError persiste.

Comment devrais-je écrire la fonction telle que, lorsque j'appelle la fonction work.py tout fonctionne bien?


Traceback:

get_ad_page_urls(page_root_url) 
Traceback (most recent call last): 

File "<ipython-input-253-ac55b8b1e24c>", line 1, in <module> 
get_ad_page_urls(page_root_url) 

File "/Users/myname/Documents/RentIndicator/Python Code/idealista_functions.py", line 35, in get_ad_page_urls 

NameError: name 'requests' is not defined 


functions.py

import requests 
import bs4 
import re 
from bs4 import BeautifulSoup 

def get_ad_page_urls(page_root_url): 
    response = requests.get(page_root_url) 
    soup = bs4.BeautifulSoup(response.text) 
    container=soup.find("div",{"class":"items-container"}) 
    return [link.get("href") for link in container.findAll("a", href=re.compile("^(/inmueble/)((?!:).)*$"))] 


work.py
import requests 
import bs4 
import re 
from bs4 import BeautifulSoup 

from functions import get_ad_page_urls 

city='Valencia' 
lcity=city.lower() 

root_url = 'https://www.idealista.com' 
house_href='/alquiler-habitacion/' 
page_root_url = root_url +house_href +lcity+ '-' + lcity + '/' 

get_ad_page_urls(page_root_url) 
+0

Pouvez-vous publier la trace complète pour cette erreur de nom? – Liteye

+0

Mes excuses, mais qu'est-ce que "full traceback"? – LucSpan

+0

@LucSpan L'erreur complète –

Répondre

0

mine fonctionne parfaitement bien sur le fonctionnement python 3.4.4

functions.py

import requests 

def get_ad_page_urls(): 
    return requests.get("https://www.google.com") 

work.py

from functions import get_ad_page_urls 
print(get_ad_page_urls()) 
# outputs <Response [200]> 

Assurez-vous qu'ils sont dans la même répertoire. Vous utilisez peut-être deux versions différentes de Python et l'une d'elles n'a pas de requêtes?

+0

Oui, mais votre 'get_ad_page_urls' n'utilise pas le module' requests', ce qui est le problème. Appeler la fonction n'est pas le problème. Les fichiers sont dans le même répertoire et les deux sont écrits dans la même version de Python. – LucSpan

+0

@LucSpan qu'est-ce que vous utilisez dans le module de demandes? Vous devez inclure une copie de chaque fichier dans la question et l'erreur complète –

+0

J'ai ajouté tous les fichiers dans la question. – LucSpan