rak*_*h a 7 python import package python-2.7 python-3.x
我正在编写一个 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
Run Code Online (Sandbox Code Playgroud)
train.py需要导入neuralnet.py 的neuralnet类。
neuralnet.py需要导入layers/inlayer.py等
(我更喜欢相对进口。)
我有一个不同的应用程序 ( classify.py) 需要导入这个模块。我在哪里...
from neuralnet.neuralnet import neuralnet
Run Code Online (Sandbox Code Playgroud)
我尝试了几种导入方式。要么我得到一个错误(主要是像 parent 这样的神秘未导入)
运行 train.py(它是神经网络模块的一部分)
from . import layer # In file neuralnet.py
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)
或者
运行classify.py(在模块之外)。
from layer.inlayers import input_layer # In file neuralnet.py
ImportError: No module named 'layer'
Run Code Online (Sandbox Code Playgroud)
我的导入在 Python2 中运行良好多年。我想知道 Python3 对我的期望是什么?我应该移到train.py我的模块之外(从技术上讲它不是模块的一部分)?请建议最佳做法。
在 Python 3 中,禁止隐式相对导入,请参阅https://www.python.org/dev/peps/pep-0328/和https://docs.python.org/release/3.0.1/whatsnew/3.0。 html#removed-语法:
相对导入唯一可接受的语法是 from .[module] 导入名称。所有不以 . 被解释为绝对进口。(PEP 0328)
from .stuff import Stuff是一个显式的相对导入,您“应该”尽可能使用它,并且必须尽可能在 Python 3 中使用。前往/sf/answers/852138451/对相对导入进行更深入的分析。
| 归档时间: |
|
| 查看次数: |
11871 次 |
| 最近记录: |