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知道,一旦您从。。。进口。。。。您指的是一个包而不是一个变量,因此不会将两者混为一谈。还有,永远不要觉得自己很笨。。。。。。。。。