gpt4 book ai didi

python - 导入模块和 NameError : global name 'module' is not defined 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:00 25 4
gpt4 key购买 nike

抱歉,如果之前有人问过这个问题。我已经四处寻找了很长一段时间,但还没有找到解决方案。

所以我在 ResourceOpen.py 文件中创建了一个类

class ResourceOpen():

import urllib.request

def __init__(self, source):
try:
# Try to open URL
page = urllib.request.urlopen(source)
self.text = page.read().decode("utf8")
except ValueError:
# Fail? Print error.
print ("Woops! Can't find the URL.")
self.text = ''

def getText(self):
return self.text

我想在另一个程序中使用这个类,youTubeCommentReader.py...

import ResourceOpen
import urllib.request

pageToOpen = "http://www.youtube.com"
resource = ResourceOpen.ResourceOpen(pageToOpen)
text = resource.getText()

每当我尝试运行 youTubeCommentReader 时,我都会收到错误消息:

Traceback               
<module> D:\myPythonProgs\youTubeCommentReader.py
__init__ D:\myPythonProgs\ResourceOpen.py
NameError: global name 'urllib' is not defined

我做错了什么?另外,我应该注意到,当我访问同一文件中的类时,ResourceOpen.py 工作正常。

最佳答案

不要在类级别导入,只需:

import urllib.request

class ResourceOpen():

def __init__(self, source):
try:
# Try to open URL
page = urllib.request.urlopen(source)
self.text = page.read().decode("utf8")
except ValueError:
# Fail? Print error.
print ("Woops! Can't find the URL.")
self.text = ''

def getText(self):
return self.text

在另一个脚本中:

import ResourceOpen
s = ResourceOpen.ResourceOpen('http://google.com')
print(s.getText())

在你的例子中,模块导入得很好,但只添加到类命名空间。您总是希望在全局范围内进行进口。

关于python - 导入模块和 NameError : global name 'module' is not defined 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5146122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com