Plotly dependency conflict


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

Anyone know how to get past this?



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?


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--
Resolving (… 2a01:4f8:10a:f401:0:7369:6772:6f6b,
Connecting to (|2a01:4f8:10a:f401:0:7369:6772:6f6b|:80… failed: Connection timed out.
Connecting to (||:80… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: [following]
–2020-12-16 23:47:32--
Connecting to (||:443… connected.
ERROR: cannot verify’s certificate, issued by ‘CN=R3,O=Let’s Encrypt,C=US’:
Unable to locally verify the issuer’s authority.
To connect to 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?

Go to 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.