Closed JaredOzzy closed 4 months ago
Hi @JaredOzzy, the first easy thing to try is updating pip
before installing kaleido.
FROM python:3.7.4-alpine
RUN pip install -U pip
RUN pip install kaleido
RUN pip install -r requirements.txt
If you want to try to install from a pip file directly, I think you're missing pip
in the RUN install https://...
command. I think you would want this to be RUN pip install https://...
. But if the issue is an old version of pip, then this command would fail as well.
Will give that a shot, I was using the latest pip version too, i still get the following.
ERROR: Could not find a version that satisfies the requirement kaleido (from versions: none)
ERROR: No matching distribution found for kaleido
I've added the RUN pip install https:// and have received the following error
ERROR: kaleido-0.0.3-py2.py3-none-manylinux2014_x86_64.whl is not a supported wheel on this platform
so yeah not available on alpine?
I was using the latest pip version too.
Ok, well it's worth double checking. But I did just find an interesting note at the end of the platform-compatibility-tag specification: https://packaging.python.org/specifications/platform-compatibility-tags/
Platform tags for other *nix platforms
The scheme defined in PEP 425 is not generally sufficient for public distribution of wheel files to other *nix platforms. Efforts are > currently (albeit intermittently) under way to define improved compatibility tagging schemes for AIX and for Alpine Linux.
I'm not familiar enough with Alpine linux to understand why it wouldn't be included in the standard linux platform tag specification, but maybe something is going on here. Could you add the output of in your container?
import platform
print(platform.machine())
print(platform.architecture())
print(platform.platform())
Can you install numpy alright? If so, I'm wondering which of these files pip chooses (https://pypi.org/project/numpy/#files).
Oh, Alpine supports a bunch of architectures: https://alpinelinux.org/downloads/
Right now, I'd only expect Kaleido to work with the x86_64
architecture.
Just went through a massive mission to get numpy installed, took ages for my containers to build too. in the logs i see it building the following numpy version.
Collecting numpy>=1.9.3
Downloading https://files.pythonhosted.org/packages/2c/2f/7b4d0b639a42636362827e611cfeba67975ec875ae036dd846d459d52652/numpy-1.19.1.zip
i had to add many deps in the dockerfile for the image to install
RUN pip install --upgrade setuptools
# Run cython deps and other things
RUN apk add --no-cache --virtual .build-deps musl-dev \
&& pip install cython \
&& apk del .build-deps
Here is the platform results
>>> import platform
>>> print(platform.machine())
x86_64
>>> print(platform.architecture())
('64bit', 'ELF')
>>> print(platform.platform())
Linux-4.19.76-linuxkit-x86_64-with
>>>
Ok, thanks for that info. The reason your numpy install took so long is that pip pulled in the numpy source bundle (numpy-1.19.1.zip
) and compiled it from source. This means that pip rejected all of the platforms that numpy is pre-compiled for.
A little searching turned up a helpful article that matches what you're seeing: https://pythonspeed.com/articles/alpine-docker-python/
If you look at the Debian-based build above, you’ll see it’s downloading matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.whl. This is a pre-compiled binary wheel. Alpine, in contrast, downloads the source code (matplotlib-3.1.2.tar.gz), because standard Linux wheels don’t work on Alpine Linux.
Why? Most Linux distributions use the GNU version (glibc) of the standard C library that is required by pretty much every C program, including Python. But Alpine Linux uses musl, those binary wheels are compiled against glibc, and therefore Alpine disabled Linux wheel support.
FWIW, the article's conclusion is "Don’t use Alpine Linux for Python images". Is changing the image base an option for you?
Ok, thanks for that info. The reason your numpy install took so long is that pip pulled in the numpy source bundle (
numpy-1.19.1.zip
) and compiled it from source. This means that pip rejected all of the platforms that numpy is pre-compiled for.A little searching turned up a helpful article that matches what you're seeing: https://pythonspeed.com/articles/alpine-docker-python/
If you look at the Debian-based build above, you’ll see it’s downloading matplotlib-3.1.2-cp38-cp38-manylinux1_x86_64.whl. This is a pre-compiled binary wheel. Alpine, in contrast, downloads the source code (matplotlib-3.1.2.tar.gz), because standard Linux wheels don’t work on Alpine Linux. Why? Most Linux distributions use the GNU version (glibc) of the standard C library that is required by pretty much every C program, including Python. But Alpine Linux uses musl, those binary wheels are compiled against glibc, and therefore Alpine disabled Linux wheel support.
FWIW, the article's conclusion is "Don’t use Alpine Linux for Python images". Is changing the image base an option for you?
it is an option, but damn i don't think its worth it at this moment, ill just go with matplotlib for now instead as the image is easy to save . still have to install numpy and go through all the issues though but yeah, alpine hasn't really been an issue for me at the moment.
ill try to convert it perhaps...
It must be an Alpine thing.
FROM python:3
works fine.
I have been in the issue for 3 days , please give me a solution to do the build success
Greetings,
is there any update on this? I need to provide kaleido to my alpine docker image :(
I've figured it out, just install miniconda3/miniforge within alpine dockerfile and then you can install kaleido from anaconda
Note: do not use forge as channel, I installed miniforge and just do $ RUN conda install -y python-kaleido; It's a lot of effort for just one package but until now I couldn't figure out an easier solution. Maybe an APK should be published for kaleido in order to avoid all this mess
Regards!
Hey, any solution? I'm facing a similar issue while installing dash
Thanks for your interest in Kaleido. We are currently working on an overhaul that might address your issue - we hope to have news in a few weeks and will post an update then. Thanks - @gvwilson
my dockerfile does the following thats relevent:
i get the same issue when i added kaleido the the requirements.txt and remove the
RUN pip install kaleido
command.I have also tried adding versions, i get the same issues.
Also Tried running the command
RUN install https://github.com/plotly/Kaleido/releases/download/v0.0.3/kaleido-0.0.3-py2.py3-none-manylinux2014_x86_64.whl
all i want is to be able to save a plotly graph to a file but orca is crazy mission with docker, was hoping the recommended kaleido would be less of a mission to install and get working