Git Product home page Git Product logo

Comments (7)

chelming avatar chelming commented on June 1, 2024 1

thanks a lot for this! 😄

from docker-mylar3.

chelming avatar chelming commented on June 1, 2024

It looks like a manual install of Pillow uses "setup.py" whereas the docker install from requirements.txt uses what I'm assuming is a "regular" install?

From docker build:

Using legacy 'setup.py install' for pystun, since package 'wheel' is not installed.
Using legacy 'setup.py install' for sgmllib3k, since package 'wheel' is not installed.
Installing collected packages: sgmllib3k, rarfile, pytz, pystun, zc.lockfile, tzdata, soupsieve, simplejson, Pillow, natsort, more-itertools, MarkupSafe, jaraco.context, feedparser, configparser, pytz-deprecation-shim, Mako, jaraco.functools, jaraco.classes, cfscrape, beautifulsoup4, tzlocal, tempora, jaraco.text, cheroot, portend, jaraco.collections, APScheduler, CherryPy
  Running setup.py install for sgmllib3k: started
  Running setup.py install for sgmllib3k: finished with status 'done'
  Running setup.py install for pystun: started
  Running setup.py install for pystun: finished with status 'done'

from pip install:

Using legacy 'setup.py install' for Pillow, since package 'wheel' is not installed.

from docker-mylar3.

chelming avatar chelming commented on June 1, 2024

this patch fixes it. it appears that --find-links when installing requirements.txt is causing Pillow to not install correctly.

diff --git a/Dockerfile b/Dockerfile
index 9882f10..c59dcc3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -41,6 +41,7 @@ RUN \
   tar xf /tmp/mylar3.tar.gz -C \
     /app/mylar3/ --strip-components=1 && \
   cd /app/mylar3 && \
+  pip install --no-cache-dir Pillow && \
   pip install --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine/ -r requirements.txt && \
   rm -rf lib/pathlib.py && \
   echo "**** cleanup ****" && \

from docker-mylar3.

chelming avatar chelming commented on June 1, 2024

sorry to keep spamming. since the precompiled wheel for Pillow doesn't have webp support I think the options are:

  • Install Pillow before requirements.txt so it builds itself
  • Remove --find-links from the pip install
  • Get the Pillow wheel compiled with webp support

The second option seems like it'd add an excessive amount lot of time when building the container and I have no idea how to go about fixing an upstream wheel from alpine.

from docker-mylar3.

aptalca avatar aptalca commented on June 1, 2024

I'm not familiar with pillow at all, but I do have this one question. If pillow is built with the optional dependency of webp, does it always require the webp package installed?

In other words, if I were to add the webp packages to our wheel builder so pillow builds with webp support, would I have to PR all the other images that use pillow to add the webp package?

I'm trying to figure out the easiest way to solve this.

Thanks

EDIT: This is our wheel builder: https://github.com/linuxserver/wheelie/blob/main/Dockerfile

from docker-mylar3.

chelming avatar chelming commented on June 1, 2024

I think it'd be ok?

I tested in the mylar container with the above patch:

root@7fa92c6e12cd:/# python3
Python 3.9.5 (default, Nov 24 2021, 21:19:13)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import features
>>> features.get_supported()
['pil', 'webp', 'webp_anim', 'webp_mux', 'transp_webp', 'libjpeg_turbo', 'jpg', 'zlib']
>>> exit()

root@7fa92c6e12cd:/# apk del libwebp-tools
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.14/main: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.14/community: No such file or directory
(1/4) Purging libwebp-tools (1.2.0-r2)
(2/4) Purging libwebp (1.2.0-r2)
(3/4) Purging giflib (5.2.1-r0)
(4/4) Purging libpng (1.6.37-r1)
Executing busybox-1.33.1-r6.trigger
OK: 125 MiB in 75 packages

root@7fa92c6e12cd:/# python3
Python 3.9.5 (default, Nov 24 2021, 21:19:13)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import features
>>> features.get_supported()
['pil', 'libjpeg_turbo', 'jpg', 'zlib']
>>>

it appears that if libwep-tools is missing from the runtime environment (even though it was compiled with it) then it just doesn't "have" that feature.

from docker-mylar3.

aptalca avatar aptalca commented on June 1, 2024

That's good to know. Thanks for testing. I'll add it to build deps.

We had that issue with numpy. After we built numpy with support for blas (optional dep), it required blas runtime and broke a bunch of images.

from docker-mylar3.

Related Issues (10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.