【发布时间】:2016-05-18 17:51:43
【问题描述】:
我对 Python 还是很陌生,现在我一直在与 import 作斗争以退出。我无法完全理解这个概念。我在导入概念完全不同的 ruby 方面有经验。
1.情况 我有这个包
├── convortal
│ ├── dbconf.yaml
│ ├── helpers.py
│ ├── __init__.py
│ ├── models
│ │ ├── company.py
│ │ ├── country.py
│ │ ├── ez_key.py
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── product_function.py
│ │ ├── __pycache__
│ │ │ ├── company.cpython-34.pyc
│ │ │ └── __init__.cpython-34.pyc
│ │ └── traveler_profile.py
│ └── __pycache__
│ └── __init__.cpython-34.pyc
├── README.md
├── requirements.txt
└── setup.py
convortal/__init___.py
import sys
from convortal.models import *
import convortal.helpers as hp
from dbconn import CtrlSession
from sqlalchemy import desc
# DECLARATIONS FOR SETUP.PY
APP_NAME = 'convortal'
__versionnum__ = ('0','0','1')
APP_VERSION = '.'.join([i for i in __versionnum__])
def convortal(argv):
....(code to read file and update DB)
convortal/models/__init__.py
__all__ = [
'Company',
'Country',
'EzKey',
'ProductFunction',
'TravelerProfile',
]
from dbconn import DBconn
from convortal.models.company import Company
from convortal.models.country import Country
from convortal.models.ez_key import EzKey
from convortal.models.product_function import ProductFunction
from convortal.models.traveler_profile import TravelerProfile
# create a connection to the DB
conn = DBconn('PROD')
# instantiate a Base object with this connection
Base = conn.Base()
公司模型:convortal/models/company.py
import convortal
from sqlalchemy import Table, Column, Integer, ForeignKey, UniqueConstraint
from sqlalchemy.orm import relationship
from models import Base
class Company(Base):
...company table with autoload
我想要达到的目标
我正在尝试创建一个可以导入的包,以便将此代码与检查目录、收集用户文件并使用此包更新、创建或停用此用户的例程一起使用。
我也在尝试从命令行执行这样的应用程序来测试它
(venv) ➜ convortal git:(master) ✗ python convortal/__init__.py
__init__.py 有 if 语句
if __name__ == '__main__':
convortal(sys.argv[1:])
运行此命令应退出应用程序并显示带有帮助字符串的消息,显示执行应用程序所需的参数。
问题
我遇到了这个错误:
Traceback (most recent call last):
File "convortal/__init__.py", line 2, in <module>
from convortal.models import *
ImportError: No module named 'convortal'
【问题讨论】:
-
为什么不只是
from .models import ...。你有没有运行setup.py来实际安装应用程序? -
试过了,没用。我正在使用 ipython 导入包,但如果我在模型
__init__.py文件中包含导入和__all__变量,我会得到相同的错误。删除模型的导入,我能够使它工作。谢谢
标签: python import package structure