我用virtualenv
创建了一个烧瓶应用程序,它的结构如下所示。我正在尝试将对象从PackageDirectory/fileA.py
导入FlaskDirectory/app/models.py
。
错误:
在models.py
我使用以下语句:from ...PackageDirectory.fileA import MyObject
,但它会出错:ValueError: attempted relative import beyond top-level package
。然后我将PackageDirectory声明为源根,并使用from PackageDirectory.fileA import MyObject
,因为它给出了错误:ImportError: No module named 'PackageDirectory'
目录结构
├── FlaskDirectory
│ ├── app
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── views.py
│ ├── flask
│ │ ├── Include
│ │ ├── Lib
│ │ ├── Scripts
│ │ ├── tcl
│ │ └── pip-selfcheck.json
│ ├── config.py
│ ├── run.py
│ └── app.py
│
├── PackageDirectory (a python package)
│ ├── ipynb (also a package)
│ ├── utils (also a package)
│ ├── __init__.py
│ ├── fileA.py
FlaskDirectory/run.py
:
from app import app
if __name__ == '__main__':
app.run()
FlaskDirectory/app/__init__.py
:
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
from . import views
app.config.from_object('config')
FlaskDirectory/config.py
:
DEBUG=True
您看到的FlaskDirectory/app.py
文件是空的,但我不确定是否可以删除该文件,或者烧瓶是否在后台使用它
答案 0 :(得分:0)
具体而言,您可以执行@phd
所述的内容。
import sys,os
path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'PackageDirectory')
sys.path.append(path)
from fileA import obj