Plotly dependency conflict

Hi,

I’m trying to build PYNQ for Ultra96. Here is my setup:

  • Ubuntu 18.04.4
  • Vitis and PetaLinux 2020.1
  • PYNQ and Ultra96-PYNQ repos v2.6.0

After launching the build with make BOARDDIR=(ultra96-pynq repo) it eventually fails with this error message:

ERROR: Cannot install -r requirements.txt (line 28), -r requirements.txt (line 4) and plotly==4.5.2 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested plotly==4.5.2
    dash 0.21.1 depends on plotly
    plotly-express 0.3.1 depends on plotly<4.0.0a0 and >=3.10.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

Anyone know how to get past this?

Jeff

Hello,

Doesn’t appear to be PYNQ, as the same versions for ploty, dash and plotly-express for v2.5 and v2.6 are the same.

This seems like the package dependencies itself changed. Not sure how to fix yet either.

Hi @pynqzen

Do you mean that one of the dependencies changed (ie. was updated)? Doesn’t the build process pull specific versions of all packages?

Jeff

For the packages the build directly complains about the versions are the same for v2.6 and v2.5. There must have been a change to something indirect, either from the PYNQ pypi requested version or one of the packages it pulls in changed. I suspect something changed in a pypi dependency because v2.6 builds worked not that long ago.

I am in the middle of rebuilding with instead trying to pull in plotly v3.10.2. I don’t directly care about plotly for what I’m doing but I also don’t know what other packages rely on plotly. There may be other side effects and this all might be a dead end.

Still can’t declare success. After downgrading plotly to 3.10.0, another problem occurred. This is not directly PYNQ’s fault either. Have you seen this one:

–2020-12-16 23:45:21-- http://sigrok.org/download/source/libsigrok/libsigrok-0.3.0.tar.gz
Resolving sigrok.org (sigrok.org)… 2a01:4f8:10a:f401:0:7369:6772:6f6b, 88.99.77.186
Connecting to sigrok.org (sigrok.org)|2a01:4f8:10a:f401:0:7369:6772:6f6b|:80… failed: Connection timed out.
Connecting to sigrok.org (sigrok.org)|88.99.77.186|:80… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: https://sigrok.org/download/source/libsigrok/libsigrok-0.3.0.tar.gz [following]
–2020-12-16 23:47:32-- https://sigrok.org/download/source/libsigrok/libsigrok-0.3.0.tar.gz
Connecting to sigrok.org (sigrok.org)|88.99.77.186|:443… connected.
ERROR: cannot verify sigrok.org’s certificate, issued by ‘CN=R3,O=Let’s Encrypt,C=US’:
Unable to locally verify the issuer’s authority.
To connect to sigrok.org insecurely, use `–no-check-certificate’.

No, I haven’t seen that message before.

Out of desperation I tried building PYNQ v2.5.4 but I end up with the same message about Plotly.

Yes I suspected v2.5 would have the same tangle. FWIW, for me I think I can get by with the pre-built rootfs. That builds without issue.

I probably can get by with the prebuild rootfs too. Can you tell me exactly how to do that or where to get the instructions from?
Thanks!

Go to PYNQ - Python productivity for Zynq - Board to get either 32 or 64-bit prebuilt rootfs. Unzip it and then to build adjust this to match your paths:

make PREBUILT=/path/image-name BOARDDIR=/path-to-your-custom-boardfiles

That’s all and this will save hours of building as well. Where it doesn’t work out so nice is if your board requires custom drivers or other files that are not on the generic rootfs images. You can however always copy files over after it boots or mount the rootfs image file on Linux and add files that way too. For example the Ultra96 v2 wifi module requires firmware files to be on the rootfs, these wouldn’t be in the generic prebuilt image.

the problem is still here. Can’t make it work on latest master and on latest tag.

I am the same issue and the methods above don’t work for me. Before December I could build the v.2.6.0 successfully.

@DuyTrandeLion @Vitalii_S @pynqzen @fpgadeveloper

Guys, this is because of this line:

https://github.com/Xilinx/PYNQ/blob/master/sdbuild/packages/python_packages_bionic/qemu.sh#L51

The latest pip changed the way it resolves dependency. This is a new thing just changed in Oct 2020. The quick fix will be to fix the pip version to an older one. I will need to look into this and propose a fix.

At this time you can use the prebuilt image for build just as a temporary workaround.

2 Likes

I now prefer to use pre-built images, saves soooo much build time! Should have started using it a long time ago.

Thanks Rock!

Any news about how to solve plotly problem?
I have been trying to build an image for a ZCU208 board, image version 2.6 and vitis 2020.2. But I’m blocked by this error. :cry:

Any suggestion?

thank you

Use this patch: downgrade pip version to make image building by yunqu · Pull Request #1182 · Xilinx/PYNQ · GitHub

Had the same issue, this quick fix seems to fix it.

1 Like