我面临着一个非常奇怪的问题。我有三个文件,第一个包含基类,其他两个文件中的类继承自该基类。
奇怪的是,昨天一切都工作正常,但今天其中一个文件不再工作了。在此期间我还没有接触过进口。
.
└── orangecontrib
├──__init__.py
└── prototypes
├──__init__.py
└── widgets
├──__init__.py
├── owpythagorastree.py
├── owclassificationpythagorastree.py
└── owregressionpythagorastree.py
因此,分类和回归类需要从基类继承,并且导入以完全相同的方式完成:
owclassificationpythagorastree.py
...
from orangecontrib.prototypes.widgets.owpythagorastree import OWPythagorasTree
...
ow回归pythagorastree.py
...
from orangecontrib.prototypes.widgets.owpythagorastree import OWPythagorasTree
...
然而,当我尝试从命令行运行这两个脚本时(使用python owregressionpythagorastree.py
)回归小部件工作正常,但分类小部件会产生以下错误:
回溯(最近一次调用最后一次):文件
“owclassificationpythagorastree.py”,第 6 行,位于
from Orangecontrib.prototypes.widgets.owpythagorastree import OWPythagorasTree ImportError:没有名为的模块
'orangecontrib.原型'
这种情况在其他项目中也发生过几次,但最终都自行解决了。但令我困扰的是我不知道是什么原因造成的。
我确实尝试从我的常规机器和 python virtualenv 运行它,我在其中安装了模块(我用pip install -e .
在基本目录中)。
我认为这种行为没有明显的原因,它让我很困扰,因此任何关于为什么会发生这种情况以及如何解决它的帮助或见解将不胜感激。
EDIT
按照要求,我跑了import sys; print(sys.path)
在两个脚本的顶部,通过 diff 运行后,它们完全相同。尽管如此,我还是在这里发布结果。
['/home/pavlin/dev/orange3-prototypes/orangecontrib/prototypes/widgets',
'/home/pavlin/dev/orange3',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages/setuptools_git-1.1-py3.5.egg',
'/home/pavlin/dev/orange-bio',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages/pyqtgraph-0.9.10-py3.5.egg',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages/requests-2.9.1-py3.5.egg',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages/slumber-0.7.1-py3.5.egg',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages/Genesis_PyAPI-1.2.0-py3.5.egg',
'/usr/lib/python3.5/site-packages/qt_graph_helpers-0.1.3-py3.5-linux-x86_64.egg',
'/home/pavlin/dev/orange3-prototypes',
'/usr/lib/python3.5/site-packages',
'/home/pavlin/dev/orange3env/lib/python35.zip',
'/home/pavlin/dev/orange3env/lib/python3.5',
'/home/pavlin/dev/orange3env/lib/python3.5/plat-linux',
'/home/pavlin/dev/orange3env/lib/python3.5/lib-dynload',
'/usr/lib64/python3.5', '/usr/lib/python3.5',
'/usr/lib/python3.5/plat-linux',
'/home/pavlin/dev/orange3env/lib/python3.5/site-packages',
'/usr/lib/python3.5/site-packages/setuptools-18.7.1-py3.5.egg',
'/home/pavlin/.local/lib/python3.5/site-packages']