我正在使用 Postgres 的 unaccent 扩展并遵循所有文档以使其工作(通过 CREATE EXTENSION 直接安装扩展并将 django.contrib.postgres 放在 django 设置中的 INSTALLED_APPS 中)。
在本地环境中,它运行良好,但是在构建应用程序并将其部署到 Heroku 之后,它看起来好像没有安装 django.contrib.postgres。因此,当我尝试使用使用 unaccent 查询的应用程序的功能时,当您在 INSTALLED_APPS 中没有 django.contrib.postgres 时,会出现“不支持的 CharField 查找 'unaccent'”。
在本地环境中的 python shell 打印 settings.INSTALLED_APPS 显示 django.contrib.postgres 在那里,但在 Heroku 上运行它显示它丢失了。heroku/python 的构建包不支持它还是我缺少一些配置?
我尝试为早期版本的 Django 安装 django-contrib-postgres 反向端口(将其放在 requirements.txt 中),但无济于事。Python 版本是 3.6.7,Django 是 2.1.2。使用带有 UnaccentExtension 的迁移创建扩展也不会改变任何东西,我确信这不是 Postgres 问题,因为使用 unaccent(columnname) 直接在数据库上查询可以按预期工作。
提前致谢。
编辑:Azure DevOps Pipelines 和 requirements.txt 的 YAML 定义
要求.txt
Django==2.1.2
django-cors-middleware==1.3.1
django-heroku==0.3.1
django-oauth-toolkit==1.2.0
djangorestframework==3.9.0
djangorestframework-camel-case==0.2.0
django-contrib-postgres==0.0.1
facepy==1.0.9
factory_boy==2.11.1
flake8==3.5.0
gunicorn==19.8.1
psycopg2-binary==2.7.5
pylint==2.1.1
pytest==3.9.1
pytest-cov==2.6.0
pytest-django==3.4.3
python-dateutil==2.7.5
raven==6.9.0
freezegun==0.3.11
mailchimp3==3.0.4
建造
pool:
name: Hosted VS2017
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.6'
inputs:
versionSpec: 3.6
- script: 'pip install -r requirements.txt'
workingDirectory: 'back-end'
displayName: 'Restore dependencies'
- script: 'python manage.py collectstatic'
workingDirectory: 'back-end'
displayName: 'Export static files'
- script: 'flake8 .'
workingDirectory: 'back-end'
displayName: 'Style analysis'
- script: 'pytest --junitxml=junit.xml --cov --cov-report=xml --cov-report=html'
workingDirectory: 'back-end'
displayName: 'Run tests'
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFiles: 'back-end/junit.xml'
- task: PublishCodeCoverageResults@1
displayName: 'Publish test coverage'
inputs:
codeCoverageTool: Coverage
summaryFileLocation: '$(System.DefaultWorkingDirectory)/back-end/coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/back-end/htmlcov/'
- task: PublishBuildArtifacts@1
displayName: 'publish artifact'
inputs:
PathtoPublish: 'back-end'
ArtifactName: BackendArtifact
释放(键和名称用 * 隐藏)
steps:
- task: boostingmy.vsts-heroku-tasks.pushu-to-heroku.PushToHeroku@1
displayName: 'Publish on Heroku'
inputs:
ApiKey: '***'
AppName: '***'
PushRoot: '$(System.DefaultWorkingDirectory)/****-Back-end-CI/BackendArtifact'