aresch / pyenet

A python wrapper for the ENet library
BSD 3-Clause "New" or "Revised" License
52 stars 30 forks source link

upload wheels to Pypi #2

Open ahicks92 opened 8 years ago

ahicks92 commented 8 years ago

Hi,

I just looked at this as someone asked me for help setting up a Python coding environment, and it doesn't appear that there's any wheels on Pypi. What are the chances of getting at least Windows wheels?

If it's helpful, I can probably script the process for you via the Python 3 launcher, but obviously I can't upload them as I'm not the package owner.

He's going to need 3 packages. This, Pyglet/Pygame, and my audio library. The latter two aren't a problem, but getting someone new to Python set up to build C packages is somewhat troublesome. I'll probably build one for him and do it that way, but it would be useful if I didn't have to in future.

aresch commented 8 years ago

Wheels? What?

ahicks92 commented 8 years ago

The new Python packaging format. Lets you upload binaries to Pypi for Windows, Mac, and Linux (but Linux has some limits. Should work for this package though). People don't need to follow build instructions and/or even have a C compiler if you use them. It makes pip install foo always work, as long as foo has a wheel matching my platform and version of Python. Essentially, it can make your package behave like a pure Python dependency. It's been built into Python for a while now.

Having a C compiler is difficult on Windows at least. I can't speak to Mac, as I don't use the platform. People will eventually install a C compiler, of course. But 2.7 now requires you to go out of your way to get it via a special download specifically for Python from Microsoft. 3.5 requires you to install VS2015, which takes an entire day for me and most people I know. For anything requiring unusual libraries or interesting build steps, it's helpful even then: with a wheel matching my version of Python, I don't have to do anything.

I'd just fork and make whatever changes need to be made, but only the package owner can actually upload them, so it's not worth it without making an issue and getting you on board first. I can write you a script that uses the Python 3 launcher to iterate through all possible Python combinations to build the wheels, skipping any that aren't installed. Then you just have to upload as usual. I can't easily automate Mac in the same manner, as my familiarity with the platform is sadly lacking.

This would be really helpful for the newbie experience. Enet is probably one of the most useful libs for games out there. I'm not aware of many other options that do what it does.

aresch commented 8 years ago

Is it possible to do this on Linux? I don't have access to or really know how to use Windows.

ahicks92 commented 8 years ago

No. You need access to Windows to build them. There might be a cross compilation procedure, but I don't know of it. There is a new type of wheel for Linux but it's very new and obviously only works on Linux.

I tried installing this from Pypi this morning. In order to get this package on Windows, you have to clone it and follow the build instructions yourself. The Pypi upload is useless for Windows platforms. If I believe pip, this package flat out doesn't work.

You could get Appveyor to do it. Appveyor is free for OSS stuff. Personally, I don't want to go that far: it's overkill for the situation and a lot of work. If you have a Windows machine and the packlage builds, it's only a few commands at a terminal.