python:来自其他文件的被调用函数需要模块

时间:2017-03-25 12:02:13

标签: python function module call nameerror

我正在调用functions.pywork.py的函数,该函数运行正常:

 from functions import get_ad_page_urls

get_ad_page_urls函数使用a.o. requests模块。

现在,无论是否将requests模块导入work.py,当我在work.py中运行被调用函数时,它会出错:NameError: name 'requests' is not defined

我在get_ad_page_urls中定义了functions.py,包括模块,就像这样,

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

或排除module,如此,

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

但是没关系,NameError仍然存在。

我应该如何编写函数,以便在work.py中调用函数时一切正常?

<小时/> 的回溯:

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)

1 个答案:

答案 0 :(得分:0)

我在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]>

确保它们位于同一目录中。您可能正在使用两个不同的python版本,其中一个没有请求?