【发布时间】:2015-04-08 15:45:27
【问题描述】:
我正在编写一个 python 模块 neuralnet。它在 Python2 中一切正常,但在 Python3 中导入失败。
这是我的代码结构。
neuralnet/
__init__.py
train.py # A wrapper to train (does not define new things)
neuralnet.py # Defines the workhorse class neuralnet
layer/
__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需要导入layers/inlayer.py等
(我更喜欢相对导入。)
我有一个不同的应用程序 (classify.py) 需要导入这个模块。
我在哪里...
from neuralnet.neuralnet import neuralnet
我尝试了几种导入方式。 要么我得到一个错误(主要是像父母一样神秘的没有导入)
-
在运行 train.py(这是神经网络模块的一部分)时
from . import layer # In file neuralnet.py SystemError: Parent module '' not loaded, cannot perform relative import
或者
-
同时运行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 不是你的包的一部分,那么是的,你应该把它移出去。
标签: python python-3.x python-2.7 import package