Django部署错误-没有名为'psycopg 2'的模块“使用heroku

4uqofj5v  于 2023-02-19  发布在  Go
关注(0)|答案(1)|浏览(159)

目前,我正在部署我的Django应用程序,但是我收到了一个错误“django.core.exceptions.加载psycopg 2模块时出错:没有名为“psycopg 2”的模块“
我安装了psycopg 2和psycopg 2-binary在windows上的virtualenv中,但错误仍然存在。禁用了Django collectstatic(env var DISABLE_COLLECTSTATIC),因为这是psycopg 2的另一个错误。我需要在ubuntu VM中部署吗?
这是我的数据库引擎。我的DATABASE_URL =“Heroku_postgres link”。我错过了什么吗?

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'storefront3',
        'HOST': 'localhost',
        'USER': 'root',
        'PASSWORD': 'Mypassword',
       
    }
}
    
    
    git push heroku master
    Enumerating objects: 9, done.
    Counting objects: 100% (9/9), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (5/5), done.
    Writing objects: 100% (5/5), 496 bytes | 496.00 KiB/s, done.
    Total 5 (delta 3), reused 0 (delta 0), pack-reused 0
    remote: Compressing source files... done.
    remote: Building source:
    remote:
    remote: -----> Building on the Heroku-22 stack
    remote: -----> Using buildpack: heroku/python
    remote: -----> Python app detected
    remote: -----> No Python version was specified. Using the same version as the last build: python-3.11.2
    remote:        To use a different version, see: https://devcenter.heroku.com/articles/python-runtimes
    remote: -----> No change in requirements detected, installing from cache
    remote: -----> Using cached install of python-3.11.2
    remote: -----> Installing pip 22.3.1, setuptools 63.4.3 and wheel 0.38.4
    remote:        Skipping installation, as Pipfile.lock hasn't changed since last deploy.
    remote: -----> Installing SQLite3
    remote: -----> Skipping Django collectstatic since the env var DISABLE_COLLECTSTATIC is set.
    remote: -----> Discovering process types
    remote:        Procfile declares types -> release, waitress-serve
    remote:
    remote: -----> Compressing...
    remote:        Done: 68.4M
    remote: -----> Launching...
    remote:  !     Release command declared: this new release will not be available until the command succeeds.
    remote:        Released v26
    remote:        https://vin-prod.herokuapp.com/ deployed to Heroku
    remote:
    remote: Verifying deploy... done.
    remote: Running release command...
    remote:
    remote: Traceback (most recent call last):
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 24, in <module>
    remote:     import psycopg2 as Database
    remote: ModuleNotFoundError: No module named 'psycopg2'
    remote:
    remote: During handling of the above exception, another exception occurred:
    remote:
    remote: Traceback (most recent call last):
    remote:   File "/app/manage.py", line 22, in <module>
    remote:     main()
    remote:   File "/app/manage.py", line 18, in main
    remote:     execute_from_command_line(sys.argv)
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    remote:     utility.execute()
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/__init__.py", line 420, in execute
    remote:     django.setup()
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/__init__.py", line 24, in setup
    remote:     apps.populate(settings.INSTALLED_APPS)
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/apps/registry.py", line 116, in populate
    remote:     app_config.import_models()
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/apps/config.py", line 269, in import_models
    remote:     self.models_module = import_module(models_module_name)
    remote:                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/importlib/__init__.py", line 126, in import_module
    remote:     return _bootstrap._gcd_import(name[level:], package, level)
    remote:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    remote:   File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
    remote:   File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
    remote:   File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
    remote:   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
    remote:   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
    remote:   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/contrib/sessions/models.py", line 1, in <module>
    remote:     from django.contrib.sessions.base_session import AbstractBaseSession, BaseSessionManager
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/contrib/sessions/base_session.py", line 26, in <module>
    remote:     class AbstractBaseSession(models.Model):
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/models/base.py", line 141, in __new__
    remote:     new_class.add_to_class("_meta", Options(meta, app_label))
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/models/base.py", line 369, in add_to_class
    remote:     value.contribute_to_class(cls, name)
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/models/options.py", line 231, in contribute_to_class
    remote:     self.db_table, connection.ops.max_name_length()
    remote:                    ^^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/utils/connection.py", line 15, in __getattr__
    remote:     return getattr(self._connections[self._alias], item)
    remote:                    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/utils/connection.py", line 62, in __getitem__
    remote:     conn = self.create_connection(alias)
    remote:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/utils.py", line 193, in create_connection
    remote:     backend = load_backend(db["ENGINE"])
    remote:               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/utils.py", line 113, in load_backend
    remote:     return import_module("%s.base" % backend_name)
    remote:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    remote:   File "/app/.heroku/python/lib/python3.11/importlib/__init__.py", line 126, in import_module
    remote:     return _bootstrap._gcd_import(name[level:], package, level)         
    remote:   File "/app/.heroku/python/lib/python3.11/site-packages/django/db/backends/postgresql/base.py", line 28, in <module>
    remote:     raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
    remote: django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'
    remote: Waiting for release.... failed.
41ik7eoe

41ik7eoe1#

您只需要安装软件包。

pip install psycopg2

以及

pip install psycopg2-binary

如果您使用PostgreSQL的标准方案,则添加文件requirement.txt

pip freeze > requirements.txt

当您部署到Heroku时,您在requirements.txt文件中指定的依赖项将在应用启动之前自动安装。

相关问题