【问题标题】:Virtualenv package issue on Heroku deploy (Django app)Heroku 部署(Django 应用程序)上的 Virtualenv 包问题
【发布时间】:2016-04-19 13:43:17
【问题描述】:

我已经将一个 Django 项目部署到 Heroku,但我遇到了一个问题:有一个包,它位于 virtualenv 文件夹中,这给了我一个错误。
这是回溯

Environment:


Request Method: POST
Request URL: https://pin-a-voyage.herokuapp.com/login/

Django Version: 1.8
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'custom_user',
'django_markdown',
'parsley')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware')


Traceback:
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/app/blog/views.py" in login
  147.                 auth_login(request, user)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/auth/__init__.py" in login
  117.     user_logged_in.send(sender=user.__class__, request=request, user=user)
File "/app/.heroku/python/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in send
  201.             response = receiver(signal=self, sender=sender, **named)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/auth/models.py" in update_last_login
  26.     user.save(update_fields=['last_login'])
File "/app/custom_user/models.py" in save
  62.             new_image = resizeimage.resize_width(pil_image_obj, 300)
File "/app/.heroku/python/lib/python2.7/site-packages/resizeimage/resizeimage.py" in wrapper
  31.                 validator(image, size)
File "/app/.heroku/python/lib/python2.7/site-packages/resizeimage/resizeimage.py" in _width_is_big_enough
  47.         raise ImageSizeError(image.size[0], width)

Exception Type: ImageSizeError at /login/
Exception Value: 'Image is too small, Image size : 300, Required size : 300'

简而言之:我上传了个人资料图片,但我遇到了这个错误,因为我修改了 virtualenv 文件夹上的包,但 virtualenv 文件夹没有推送到 Heroku。

由于部署到 Heroku 时必须将 virtualenv 文件夹放入 .gitignore(不是吗?),我该如何避免这个问题?

【问题讨论】:

  • 你不应该编辑任何包文件,这些文件不会被推送到你的heroku repo
  • 好的,但是如果我需要编辑一个以更改某些功能怎么办?还有其他方法吗?

标签: django heroku deployment virtualenv


【解决方案1】:

如果您需要对包进行本地编辑(但考虑贡献或分叉一个新版本),那么您可能希望将该包复制到您的 Django 项目中并像您自己编写一样使用它。 IE。作为您项目中的常规 Django 应用程序。

【讨论】:

    【解决方案2】:

    在大多数情况下,不应在虚拟环境中编辑文件。这是因为virtual environment holds packages installed with pip only in the local system。但是,如果使用包提供的选项/属性无法满足要求,开发人员可以编辑已安装应用程序的代码。

    您可以通过overriding file with custom code 推送已安装应用的自定义代码,并可以在生产环境中使用它。示例见reusable apps

    首先make sure updated requirements.txt is pushed to your production environment。从堆栈跟踪/site-packages/resizeimage/ 导致您出现问题。如果您使用 PIL 更新 requirements.txt 以包含 pil 并在您的 heroku 服务器中安装 PIL。

    然后覆盖您的软件包的必要文件。为此,您可以创建一个与 pip 包同名的目录,然后创建一个与您必须编辑的文件同名的文件。在此之后推送此目录。

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 2021-08-09
      • 2018-11-19
      • 2021-09-23
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多