簡體   English   中英

Heroku部署上的Virtualenv軟件包問題(Django應用)

[英]Virtualenv package issue on Heroku deploy (Django app)

我已經將一個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。

由於將virtualenv文件夾部署到Heroku時必須放在.gitignore中(不是嗎?),如何避免此問題?

如果您需要對程序包進行本地編輯(但可以考慮提供或創建新版本),則可能需要將該程序包復制到Django項目中並像自己編寫程序一樣使用它。 即作為您項目中的常規Django應用。

在大多數情況下,不應在虛擬環境中編輯文件。 這是因為virtual environment holds packages installed with pip only in the local system 但是,如果不能通過使用軟件包隨附的選項/屬性來實現要求,則開發人員可以編輯已安裝應用的代碼。

您可以推送已安裝應用程序的自定義代碼,並可以通過使用overriding file with custom code在生產環境中使用它。 有關示例,請參見可重復使用的應用程序

首先, make sure updated requirements.txt is pushed to your production environment 從堆棧跟蹤/site-packages/resizeimage/導致了您的問題。 如果您正在使用PIL更新requirements.txt以包含pil並將其安裝在heroku服務器中。

然后覆蓋軟件包中的必要文​​件。 為此,您可以創建一個與pip包名稱相同的目錄,然后創建一個與您必須編輯的名稱相同的文件。 在此之后推送此目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM