我正在寫一個python模塊neuralnet。它在Python2中工作得很好,但在Python3中,導入失敗。Python3正確的方式來導入相對或絕對?
這是我的代碼結構。
neuralnet/
__init__.py
train.py # A wrapper to train (does not define new things)
neuralnet.py # Defines the workhorse class neuralnet
layers/
__init__.py
inlayer.py # Defines input layer class
hiddenlayer.py
application/ # A seperate application (not part of the package)
classify.py # Imports the neuralnet class from neuralnet.py
train.py需要導入neuralnet.py的neuralnet類。
neuralnet.py需要導入層/ inlayer.py等
這需要導入此模塊(我喜歡相對導入。)
我有一個不同的應用程序(classify.py)。 我在哪裏...
from neuralnet.neuralnet import neuralnet
我試過幾種方法導入。 要麼我得到一個錯誤(大多晦澀像父不導入)
1)當運行train.py(這是neuralnet模塊的一部分)
from . import layer # In file neuralnet.py
SystemError: Parent module '' not loaded, cannot perform relative import
或者
2)同時運行classify.py(它在模塊之外)。
from layer.inlayers import input_layer # In file neuralnet.py
ImportError: No module named 'layer'
我的導入多年來在Python2中工作得非常好。我想知道Python3對我的期望是什麼?我應該將train.py移到我的模塊外面(技術上它不是模塊的一部分)?請建議最佳做法。
感謝 拉克什
按'net.py'你的意思是'neuralnet.py'?您的示例不包含名爲'net.py'的文件。另外,如果train.py不是你的軟件包的一部分,那麼是的,你應該將它移出。 – BrenBarn 2015-02-08 23:46:58