我是Python的初学者.在开始之前,这是我的Python文件夹结构
-project
----src
------model
--------order.py
------hello-world.py
Run Code Online (Sandbox Code Playgroud)
在src我有一个名为的文件夹model,其中有一个Python文件order.py,其内容如下:
class SellOrder(object):
def __init__(self,genericName,brandName):
self.genericName = genericName
self.brandName = brandName
Run Code Online (Sandbox Code Playgroud)
接下来我hello-world.py在src文件夹内,上面一层order.py:
import model.order.SellOrder
order = SellOrder("Test","Test")
print order.brandName
Run Code Online (Sandbox Code Playgroud)
每当我运行python hello-world.py它都会导致错误
Traceback (most recent call last):
File "hello-world.py", line 1, in <module>
import model.order.SellOrder
ImportError: No module named model.order.SellOrder
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
Raf*_*azZ 30
Python中的所有模块都必须具有特定的目录结构.你可以在这里找到细节.
创建一个__init__.py在model目录下调用的空文件,这样您的目录结构将类似于:
.
??? project
??? src
??? hello-world.py
??? model
??? __init__.py
??? order.py
Run Code Online (Sandbox Code Playgroud)
同样在您的hello-world.py文件中,将import语句更改为以下内容:
from model.order import SellOrder
Run Code Online (Sandbox Code Playgroud)
那应该修好:)
PS:如果要将model目录放在其他位置(不在同一目录分支中),则必须使用修改python路径sys.path.
您需要__init__.py在层次结构中的每个文件夹中都有一个名为(每边两个下划线)的文件,因此src/一个在model/. 这是 python 寻找知道它应该访问特定文件夹的内容。这些文件旨在包含初始化说明,但即使您将它们创建为空,这也能解决问题。
如果它是您的根模块,只需将其添加到PYTHONPATH(PyCharm 通常会这样做)
export PYTHONPATH=$PYTHONPATH:<root module path>
Run Code Online (Sandbox Code Playgroud)
对于 Docker:
ENV PYTHONPATH="${PYTHONPATH}:<root module path in container>"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132422 次 |
| 最近记录: |