2017-03-25 1 views
0

Ich bin eine Funktion aus functions.py in work.py Aufruf, das funktioniert:Python: aufgerufene Funktion aus anderer Datei muss Module

from functions import get_ad_page_urls 

Die get_ad_page_urls Funktion nutzt u.a. das requests Modul.

Nun, ob oder nicht, ich importieren Sie die requests Modul in work.py, wenn ich die genannte Funktion in work.py laufen, gibt es einen Fehler: NameError: name 'requests' is not defined.

I get_ad_page_urls in functions.py einschließlich dem Modul definiert haben, wie so,

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

oder ohne die module, wie so,

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

aber es spielt keine Rolle, bleibt die NameError.

Wie soll ich die Funktion schreiben, so dass wenn ich die Funktion in work.py alles funktioniert gut funktioniert?


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

Können Sie vollständige Traceback für diesen NameError buchen? – Liteye

+0

Ich entschuldige mich, aber was ist "vollständige Traceback"? – LucSpan

+0

@LucSpan Der volle Fehler –

Antwort

0

-Mine arbeitet völlig in Ordnung läuft auf 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]> 

Stellen Sie sicher, sie sind in der dasselbe Verzeichnis. Sie verwenden möglicherweise zwei verschiedene Python-Versionen und eine davon hat keine Anfragen?

+0

Ja, aber Ihre 'get_ad_page_urls' verwendet nicht das 'Anfragen'-Modul, was das Problem ist. Der Aufruf der Funktion ist nicht das Problem. Dateien befinden sich in demselben Verzeichnis und beide sind in der gleichen Python-Version geschrieben. – LucSpan

+0

@LucSpan Was verwenden Sie im Requests-Modul? Sie sollten eine Kopie jeder Datei in die Frage einfügen und den vollständigen Fehler –

+0

Ich habe alle Dateien in der Frage hinzugefügt. – LucSpan

Verwandte Themen