Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:从其他文件调用的函数需要模块_Python_Function_Module_Call_Nameerror - Fatal编程技术网

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您在请求模块中使用的是什么?你应该在问题中包括每个文件的副本和完整错误。我已经在问题中添加了所有文件。