回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我面临一个非常奇怪的问题。我有三个文件,第一个文件包含基类,其他两个文件中的类从中继承。在</p>
<p>奇怪的是,昨天一切都很好,但其中一个文件今天不起作用了。同时我还没碰过进口货。在</p>
<pre><code>.
└── orangecontrib
├──__init__.py
└── prototypes
├──__init__.py
└── widgets
├──__init__.py
├── owpythagorastree.py
├── owclassificationpythagorastree.py
└── owregressionpythagorastree.py
</code></pre>
<p>因此分类和回归类需要从基类继承,导入的方式完全相同:</p>
<p><em>owclassifi公司cationpythagorastree.py</em></p>
^{pr2}$
<p><em>好的职业pythagorastree.py</em></p>
^{pr2}$
<p>然而,当我尝试从命令行运行这两个脚本时(使用<code>python owregressionpythagorastree.py</code>),回归小部件工作正常,但是分类小部件产生以下错误:</p>
<blockquote>
<p>Traceback (most recent call last): File
"owclassificationpythagorastree.py", line 6, in
from orangecontrib.prototypes.widgets.owpythagorastree import OWPythagorasTree ImportError: No module named
'orangecontrib.prototypes'</p>
</blockquote>
<p>这种情况在其他项目中也发生过好几次,但最终它自己解决了。但我不知道是什么原因造成的。在</p>
<p>我确实尝试过在我的普通机器和python virtualenv上运行这个模块,在那里我安装了这个模块(我是在基本目录中使用<code>pip install -e .</code>来完成的)。在</p>
<p>我看不出这种行为的明显原因,它困扰了我很多,所以任何关于为什么会发生这种情况以及如何解决它的帮助或见解都将不胜感激。在</p>
<hr/>
<p><strong>编辑</strong></p>
<p>根据请求,我在两个脚本的顶部运行<code>import sys; print(sys.path)</code>,在通过diff运行它之后,它们完全相同。尽管如此,我还是把结果贴在这里。在</p>
<blockquote>
<p>['/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']</p>
</blockquote>