pyqt / python-qt5

Unofficial PyQt5 via PyPI for Python 2.7 64-bit on Windows
GNU General Public License v3.0
280 stars 78 forks source link

Cross-platform #5

Open mottosso opened 9 years ago

mottosso commented 9 years ago

python-qt5 is currently distributed as a source distribution, which means that it won't distinguish between platforms when installing via pip. However as the included binaries are for Windows-only, they will fail on any other platform.

One alternative is to instead provide it as a source-distribution, but doing so would mean distributing from each platform individually; such as from Windows, OSX and potentially Linux (Ubuntu, initially) which means we can no longer use Travis and therefore not automatically distribute, as we are currently, as Travis only runs on Linux (and potentially OSX).

Another alternative is to bundle each platform into one big package, and decide at run-time which binaries to import, such as via __init__.py. This works, although as the binaries are 50mb+ would incur as rather large cost to disk-space and download time.

ethanhs commented 9 years ago

You can make platform wheels. This is at least the recommended way to make multi-platform distributions. For example Christoph Gohlke has many wheels. Note the variety of types.

I think this makes the most sense, since it allows for both OS X and Windows wheels. Then linux can be built automatically maybe?

Bundling all of them together doesn't make much sense to me. You probably wouldn't be able to fit it on PyPi.

The wheel option is probably the best, since I believe that PyPi will choose the correct platform wheel.

mottosso commented 9 years ago

Thanks @IronManMark20.

I've only briefly had a look at wheels, but can't say I understand it very well. :S

How would one get started?

ethanhs commented 9 years ago

You should be able to do python setup.py bdist_wheel and it will automatically detect the platform etc, and name the file as according to PEP 425. This is called a "platform wheel". Though as noted on this page, Linux is not currently supported.

Targeting Debian would make the most sense, because then it would be available to a wide variety of derivative distros.