python:从其他文件调用的函数需要模块
我正在将一个函数从python:从其他文件调用的函数需要模块,python,function,module,call,nameerror,Python,Function,Module,Call,Nameerror,我正在将一个函数从functions.py调用到work.py,它可以正常工作: from functions import get_ad_page_urls get\u ad\u page\u url函数使用a.o.请求模块 现在,无论我是否将requests模块导入work.py,当我在work.py中运行调用的函数时,它都会给出一个错误:NameError:name'requests'未定义 我在functions.py中定义了get\u ad\u page\u URL,包括模块,如下
functions.py
调用到work.py
,它可以正常工作:
from functions import get_ad_page_urls
get\u ad\u page\u url
函数使用a.o.请求
模块
现在,无论我是否将requests
模块导入work.py
,当我在work.py
中运行调用的函数时,它都会给出一个错误:NameError:name'requests'未定义
我在functions.py
中定义了get\u ad\u page\u URL,包括模块,如下所示
def get_ad_page_urls():
import requests
<rest of function>
import requests
def get_ad_page_urls():
<rest of function>
但这并不重要,namererror
仍然存在
如何编写函数,以便在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
work.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/)((?!:).)*$"))]
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)
import requests
def get_ad_page_urls():
return requests.get("https://www.google.com")
from functions import get_ad_page_urls
print(get_ad_page_urls())
# outputs <Response [200]>
Mine在python 3.4.4上运行得非常好
函数.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/)((?!:).)*$"))]
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)
import requests
def get_ad_page_urls():
return requests.get("https://www.google.com")
from functions import get_ad_page_urls
print(get_ad_page_urls())
# outputs <Response [200]>
work.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/)((?!:).)*$"))]
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)
import requests
def get_ad_page_urls():
return requests.get("https://www.google.com")
from functions import get_ad_page_urls
print(get_ad_page_urls())
# outputs <Response [200]>
从函数导入获取广告页面URL
打印(获取广告页面URL())
#输出
确保它们位于同一目录中。您可能正在使用两个不同的python版本,其中一个版本没有请求?您可以发布该名称错误的完整回溯吗?很抱歉,什么是“完整回溯”@LucSpan完整错误我唯一能让它工作的方法是在functions.py
中运行代码,然后在work.py
中调用该函数。我在functions.py
@LucSpan中导入requests
,就像文件“/Users/yelite/Library/Preferences/PyCharm2016.3/scratch/scratch\u 9.py”,第7行,在foo中返回名称错误:没有定义全局名称“a”
是的,但是您的get\u ad\u页面URL
没有使用requests
模块,这就是问题所在。调用函数不是问题所在。文件位于同一目录中,并且都是以相同的Python版本编写的。@LucSpan您在请求模块中使用的是什么?你应该在问题中包括每个文件的副本和完整错误。我已经在问题中添加了所有文件。