我正在尝试导入目录sns.distplot(s['size'], bins = len(s))
中存在的软件包import http.client
,但是当我尝试将其导入python脚本文件并执行该文件时,它显示/usr/lib/python3.6
< / p>
我尝试进一步调试,发现sys.path的顺序是罪魁祸首。
ModuleNotFoundError: No module named 'http.client'
输出为:
为import sys
print ('\n'.join(sys.path))
import http
print (http.__file__)
import http.client
print ('\n'.join(sys.path))
/root/.pycharm_helpers/pydev
/usr/lib/python3/dist-packages/fire
/root/.pycharm_helpers/third_party/thriftpy
/root/.pycharm_helpers/pydev
/usr/lib/python3.6
and so on...
print (http.__file__)
由于/usr/lib/python3/dist-packages/fire
在实际路径/usr/lib/python3/dist-packages/fire
之前,并且也存在“ http”目录,但是没有导致此错误的客户端文件。
现在我的问题是如何包含/usr/lib/python3.6
,如果importError发生了,那么它应该尝试找到其余的import http.client
,以便即使在{{1 }}应该再试一次,并且在转弯sys.path
时,它将成功导入。
还是有更好的方法来解决这个问题?
答案 0 :(得分:0)
您可以命名要从中导入模块的软件包。
所以类似from http import client as http.client
的东西将起作用。
同样也不能那样,因为您可以调用模块,但是您希望像例如hc这样的代码,并且希望在后面的代码中简短地使用http.client.somefunction()
来引用hc.somefunction()