小编LaS*_*ell的帖子

绝对导入不起作用,但相对导入确实如此

这是我的app结构:

foodo/
    setup.py
    foodo/
        __init__.py
        foodo.py
        models.py
Run Code Online (Sandbox Code Playgroud)

foodo/foodo/foodo.pymodels.py模块导入类:

from foodo.models import User
Run Code Online (Sandbox Code Playgroud)

抛出一个ImportError:

ImportError: No module named models
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用相对导入它确实有效:

from models import User
Run Code Online (Sandbox Code Playgroud)

如果我在导入之前输入pdb断点并继续,它也可以工作.

我应该可以使用绝对和相对导入吗?

python python-import importerror python-2.7

4
推荐指数
1
解决办法
1469
查看次数

Django 单元测试在 Travis CI 构建上失败

我有一个非常基本的 Django 应用程序(Python 3.6.4),我编写了一个在本地通过的单元测试。为测试创建内存 SQLite DB(默认情况下)。当我的 Travis CI 构建运行相同的测试时,测试通过但测试命令失败并出现以下错误:

File "/home/travis/virtualenv/python3.6.5/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 301, in execute
    return Database.Cursor.execute(self, query)
django.db.utils.OperationalError: near "SCHEMA": syntax error

The command "python manage.py test --settings=myapp.dev_settings" exited with 1.
Run Code Online (Sandbox Code Playgroud)

我注意到的一件奇怪的事情是,当在 Travis 上运行测试时,它说它正在重用现有的数据库并且在测试运行后永远不会破坏它:

$ python manage.py test --settings=myapp.dev_settings
Run Code Online (Sandbox Code Playgroud)

使用现有的测试数据库作为别名 'default'...

我不太明白,因为它应该是一个内存数据库,当我在本地运行它时,每次都会创建一个新数据库:

Creating test database for alias 'default'... 
. . .
Destroying test database for alias 'default'... 
Run Code Online (Sandbox Code Playgroud)

我的dev_settings.py文件在文件系统上有一个 sqlite db,但这仅用于运行本地开发服务器:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
Run Code Online (Sandbox Code Playgroud)

Travis 安装了所有依赖项,它们与我的本地环境相匹配(我很确定)。

任何帮助都会很棒,我在这里肯定遗漏了一些明显的东西!!!

django python-3.x travis-ci

2
推荐指数
1
解决办法
1337
查看次数