2015-02-11 95 views
0

我有一些问题,从一个模块中导入一个类,当我运行test_or.py:文件导入另一个文件

. 
├── mymodule 
│   ├── __init__.py 
│   ├── neuron.py 
│   └── perceptron.py 
└── test_or.py 

每个文件都有这些import语句:

test_or.pyfrom mymodule.perceptron import Perceptron

perceptron.pyfrom neuron import Neuron

neuron.py进口只从模块

标准__init__.py是空

的错误是:

Traceback (most recent call last): 
    File "test_or.py", line 1, in <module> 
    from mymodule.perceptron import Perceptron 
    File "/home/andrea/ann/mymodule/perceptron.py", line 1, in <module> 
    from neuron import Neuron 
ImportError: No module named 'neuron' 

如果我运行从文件夹perceptron.py那里是neuron.py它的工作原理正确,但如果我从“主”文件夹运行它Python告诉我同样的错误。我想我不知道如何组织一个模组。

+1

您确定'test_or.py'是否具有该导入语句? '因为错误信息与你写的 – Railslide 2015-02-11 16:57:51

+0

Ops不匹配,你说得对,我纠正了 – 2015-02-11 17:07:04

+0

你有一个大写'N',是叫做neuron.py或Neuron.py的文件吗? – 2015-02-11 17:07:32

回答

0

问题是您当前的工作目录是相对于test_or.py。将perceptron.py中的行更改为:

from mymodule.neuron import Neuron 
+0

谢谢,它的工作原理!然而,我不明白为什么,如果perceptron.py和neuron.py都在同一个模块(和在同一个文件夹中),为什么我必须指定模块的名称? – 2015-02-11 18:53:59

+0

因为您基于当前的工作目录进行导入。如果你从'test_or.py'开始,即'。/'(你从它开始的目录),即使'perceptron.py'在'。/ mymodule /' – 2015-02-11 18:55:19

相关问题