Closed petersilva closed 3 years ago
What version of pynsist do you have? This could be related to #210, a change which is in 2.6.
If you have the new version already, these are the relevant functions - if any of them returns 0, it decides the wheel is incompatible:
fractal% pip3 list | grep pynsist
pynsist 2.5
fractal% python -V
Python 3.8.5
fractal%
I upgraded to 2.6 with pip --upgrade pynsist. Error messages are unchanged.
hang on. I lied... it is complaining about a different package now... PyNacl is OK, it is Cryptography it is complaining about.
opying packages into build directory...
Collecting wheel file: six-1.15.0-py2.py3-none-any.whl (from: pynsist_pkgs/*.whl)
Collecting wheel file: PyNaCl-1.4.0-cp38-cp38-win_amd64.whl (from: pynsist_pkgs/*.whl)
Collecting wheel file: cryptography-3.4.6-cp36-abi3-win_amd64.whl (from: pynsist_pkgs/*.whl)
Traceback (most recent call last):
File "/home/peter/.local/bin/pynsist", line 8, in <module>
sys.exit(main())
File "/home/peter/.local/lib/python3.8/site-packages/nsist/__init__.py", line 533, in main
ec = InstallerBuilder(**args).run(makensis=(not options.no_makensis))
File "/home/peter/.local/lib/python3.8/site-packages/nsist/__init__.py", line 487, in run
self.prepare_packages()
File "/home/peter/.local/lib/python3.8/site-packages/nsist/__init__.py", line 359, in prepare_packages
wg.get_all()
File "/home/peter/.local/lib/python3.8/site-packages/nsist/wheels.py", line 299, in get_all
self.get_globs()
File "/home/peter/.local/lib/python3.8/site-packages/nsist/wheels.py", line 317, in get_globs
self.validate_wheel(path)
File "/home/peter/.local/lib/python3.8/site-packages/nsist/wheels.py", line 338, in validate_wheel
raise ValueError('Wheel {} is not compatible with Python {}, {}'
ValueError: Wheel cryptography-3.4.6-cp36-abi3-win_amd64.whl is not compatible with Python 3.8.5, win_amd64
fractal%
OK, that one is #219. I've always assumed that cp36
means compatible with Python 3.6 specifically; it looks like Cryptography is using it to mean 3.6 or above. I need to work out whether I'm wrong and should just change the code, or whether there's a bigger confusion & we need to either fix other tools or clarify standards.
In the meantime, assuming that wheel does actually work on Python 3.8, you can probably work around this by renaming it so it has cp38
in place of cp36
.
ok renamed... then hit same problem with bcrypt... applied same rename strategy. Package built. Tried installing it... it barfed... There is another error mentioned in the original bug:
Collecting vine==5.0.0
Using cached vine-5.0.0-py2.py3-none-any.whl (9.4 kB)
Saved ./vine-5.0.0-py2.py3-none-any.whl
Successfully downloaded amqp vine
Collecting appdirs
Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Saved ./appdirs-1.4.4-py2.py3-none-any.whl
Successfully downloaded appdirs
ERROR: Could not find a version that satisfies the requirement netifaces (from versions: none)
ERROR: No matching distribution found for netifaces
Collecting pika
Using cached pika-1.2.0-py2.py3-none-any.whl (154 kB)
Saved ./pika-1.2.0-py2.py3-none-any.whl
Successfully downloaded pika
Collecting psutil
Using cached psutil-5.8.0-cp38-cp38-win_amd64.whl (245 kB)
Saved ./psutil-5.8.0-cp38-cp38-win_amd64.whl
Successfully downloaded psutil
Collecting paramiko
There are a bunch of binary downloaders that I run to populate pynsist_pkgs before runnint pynsist... They are all:
pip3 download X --only-binary=:all: --platform win_amd64
it fails to obtain a binary for netifaces, as shown above.
When I try to run the package it fails importing netifaces... and also complains about amqp ... which I would have thought it would have found...
in adidtion to the manual editing above, for now, since there is no appropriate netifaces module, somebody built another one:
pip3 download netifaces-w38 --only-binary=:all: --platform win_amd64
# replaces pip3 download netifaces --only-binary=:all: --platform win_amd64
which will work until the normal source builds a 3.8 binary package.
The renaming workarounds should no longer be needed with Pynsist 2.7 (just released). For the netifaces issue, there's nothing I can do - it just doesn't have a pre-built package for Python 3.8.
Thanks!
This used to work on ubuntu 18, but various steps fail in different ways on Ubuntu 20.
the script is a few lines long, it downloads a bunch of packages with pip download --only-binary=:all: --platform win_amd64 and then python3 setup.py bdist_wheel then pynsist win_installer.cfg
the config file being built from a remplate. works ok on ubuntu 18.04, but on ubuntu 20.04, it always fails.
details of the failure modes in an issue opened for that package: https://github.com/MetPX/sarracenia/issues/368
any ideas?