从Github导入:如何修复ImportError

时间:2019-06-03 14:39:24

标签: python module pytorch

我想在Python中使用open source person re-identification library

  • 在Ubuntu 19.04上
  • 与Anaconda
  • 没有CUDA
  • 在终端PyCharm中(或没有)
  • Python版本3.7.3
  • PyTorch版本1.1.0

为此,我必须遵循他们存款git上的说明:

git clone https://github.com/Cysu/open-reid.git
cd open-reid
python setup.py install

python examples/softmax_loss.py -d viper -b 64 -j 2 -a resnet50 --logs-dir logs/softmax-loss/viper-resnet50

我收到以下错误:

from sklearn.utils.extmath
import pinvh
  

ImportError:无法导入名称'pinvh'

我尝试使用PyTorch的早期版本(0.4.1、0.4.0和1.0.1)创建虚拟环境,但是我总是得到:

  File "examples/softmax_loss.py", line 12, in <module>
    from reid import datasets
ModuleNotFoundError: No module named 'reid'

我不知道如何解决。

编辑:

您好,谢谢您的回答,问题在于导入方式类似于:

from reid import datasets
from reid import models
from reid.dist_metric import DistanceMetric
from reid.trainers import Trainer
from reid.evaluators import Evaluator
from reid.utils.data import transforms as T
from reid.utils.data.preprocessor import Preprocessor
from reid.utils.logging import Logger
from reid.utils.serialization import load_checkpoint, save_checkpoint

我尝试过:

from ../reid import datasets

但是我有一个

File "examples/softmax_loss.py", line 12
from ../reid import datasets
   ^
SyntaxError: invalid syntax

编辑2: 重新安装Python 3.7.3和pytorch 1.1.0后,pinvh问题仍然存在...我仍然收到此消息:

ImportError: cannot import name 'pinvh' from 'sklearn.utils.extmath' 

如果您可以告诉我如何解决它,或者尝试告诉我它是否有效,请

2 个答案:

答案 0 :(得分:0)

由于目录结构如下: /(root)-->| | |-->reid |--> (contents inside reid) | | |-->examples | -->softmax_loss.py | |-->(Other contents in root directory)

可以观察到reidsoftmax_loss.py不在同一目录中,而是在父目录中。

因此,在文件softmax_loss.py中的第12行及以下行中,将reid替换为../reid,这将在父目录中查找目录reid。

另一种方法是使用:import ../reid as R或任何其他变量;然后使用from R import datasets,依此类推

答案 1 :(得分:0)

utils.extmath.pinvh在scikit-learn版本0.19中已弃用,在版本0.21中已删除。因此,简单的解决方法是使用早期版本的scikit-learn。