Python 进口方式不明
我需要使用一些在线代码,我不确定是否使用了一些导入方法。以下是代码的顶部部分:Python 进口方式不明,python,import,Python,Import,我需要使用一些在线代码,我不确定是否使用了一些导入方法。以下是代码的顶部部分: from __future__ import absolute_import, division, print_function import itertools import multiprocessing import sys import time import warnings import numpy as np ot = True try: from ot.lp import emd_c,
from __future__ import absolute_import, division, print_function
import itertools
import multiprocessing
import sys
import time
import warnings
import numpy as np
ot = True
try:
from ot.lp import emd_c, check_result
from scipy.spatial.distance import _distance_wrap # ot imports scipy anyway
except:
warnings.warn('cannot import module \'ot\', module \'emd\' will be empty')
ot = False
那是什么?据我所知,它看起来像
True.lp
,但我以前从未见过这种情况(我甚至不知道用谷歌搜索是为了什么)。而且我总是会遇到错误,我不知道该怎么做才能修复它。谢谢大家! ot.lp是一个。附加到源代码的链接 我相信图书馆被称为。您可以通过以下方式安装它:
pip install POT
不幸的是,在这里,
ot
意味着两件事:一个bool
变量的名称和一个模块(其他人已经链接到该模块)
如果可以导入模块ot
,则代码的目的是使变量ot
为True
,否则为False
。因此,可以推测,代码中的其他地方会根据变量ot
的值进行检查
这本身就是一种不错的做法,但至少变量名可以改进
在import
语句中使用名称时,Python将在PYTHONPATH
环境变量中指定的目录中查找该名称,并忽略在代码中定义的类似名称。例如,这是可行的:
sklearn = None
from sklearn import linear_model
您可以看到Python没有解析变量
sklearn
来尝试从None
导入linear\u model
,您在哪里找到了这个?问题是,文本中的ot没有被True替换。这似乎只是一种令人不愉快的方式,有一个标志,ot
,从True
开始,但是如果从ot.lp
导入失败,则设置为False
。可能以后会有更多的代码,这取决于是否成功导入了土方工程的距离信息。直观地看,在将True
赋值给ot
之后,似乎确实尝试从ot.lp导入,但显然不起作用。最好调用ot
,比如说has\u ot
。另请看@gmds的非常好的答案。我现在觉得自己好笨。。。非常感谢!然而,为什么对包和变量使用相同的名称没有问题呢?可能有人会建议不要这样做,但是Python知道,一旦您从。。。进口。。。。您指的是一个包而不是一个变量,因此不会将两者混为一谈。还有,永远不要觉得自己很笨。。。。。。。。。