Python 3.5.1 urllib没有属性请求

Python 3.5.1 urllib没有属性请求,python,python-3.x,urllib,urlopen,Python,Python 3.x,Urllib,Urlopen,我试过了 import urllib.request 或 我的urllib的路径是 /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/\uuuuu init\uuuuu.py 我想知道urlopen在哪里,或者我的python模块指向了错误的文件吗?根据,您必须使用以下命令: import urllib.request 原因是: 对于这样的包,您有时需要显式导入 你要的那个。这样,就不必加载urlli

我试过了

import urllib.request

我的urllib的路径是
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/\uuuuu init\uuuuu.py

我想知道urlopen在哪里,或者我的python模块指向了错误的文件吗?

根据,您必须使用以下命令:

import urllib.request
原因是:

对于这样的包,您有时需要显式导入 你要的那个。这样,就不必加载urllib模块 因为你只需要一个小零件,一切就都完了


如果上面的内容对您不起作用,请尝试重命名python模块

在我的特殊情况下,问题是我运行的文件名为
http.py
。一旦我将名称更改为
test http.py
,导入urllib.request就解决了错误
AttributeError:模块“urllib”没有属性“request”


我注意到,在异常跟踪的后面,内部包试图获取一个名为
http
的模块,因此猜测我的模块的名称是wonkin stuff up…

在python 3.6.x中,这对我很有效,这样我根本不必更改代码:

import urllib.request as urllib
然后在代码中调用urlopen函数

例如:

test = urllib.urlopen("----")
这样

import urllib.request
urllib.request.urlopen('http://216.58.192.142',timeout=1)

我也有同样的问题。我正在使用Python 3.8.2


我检查了位于/usr/lib/python3.8/urllib/的_init_uuz.py文件及其空文件,这意味着您不能仅使用import-urllib进行完全限定访问。在这种情况下,您必须使用import urllib.request。

。对我有用(我也有同样的道路)。你从os.listdir(os.path.dirname(urllib.uuuuu file.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。尝试导入系统;打印(sys.path)并查看是否出现任何与python 2相关的路径?如果是这样的话,也许您在shell环境中的PYTHONPATH中设置了一些不寻常的东西?并且,作为记录,
import urllib.request;urllib.request.urlopen
对我来说很好<代码>导入urllib;urllib.request.urlopen将引发您看到的
AttributeError
<代码>导入urllib;从urllib.request导入urlopen,这有点奇怪,但它起作用了!我不知道为什么,但这对我不起作用。我正在使用python
3.5.2
将import-urllib更改为import-urllib.request,其他什么都没有,它开始重新工作。我不太清楚为什么它会以这种方式工作,但这确实起到了作用,谢谢。可以找到一些有趣的背景信息。例如,
email.message
子模块也是如此。基本上,
os.path
是stdlib中唯一违反此规则的子模块。这解决了一个问题!如果工作目录中的任何位置都有名为http.py的文件,则也可能导致此错误。请注意,这可能会阻止其他依赖urllib ex.http.CLIENT的库。如果其他人需要编辑您的代码,这将导致混乱。可能不是“将”而是“可能”,但我同意,如果您编写的代码可能由其他人管理,最好写一条关于所使用的解决方法的注释,因此,对于维护人员来说,这并不奇怪。如果有人像我一样将代码从python2.7迁移到python3,那么以这种方式将以前使用的urllib2更改为urllib也会有所帮助!
test = urllib.urlopen("----")
import urllib.request
urllib.request.urlopen('http://216.58.192.142',timeout=1)