Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upload wheels to Pypi #2

Open
ahicks92 opened this issue May 20, 2016 · 4 comments
Open

upload wheels to Pypi #2

ahicks92 opened this issue May 20, 2016 · 4 comments

Comments

@ahicks92
Copy link

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
Copy link
Owner

aresch commented May 21, 2016

Wheels? What?

@ahicks92
Copy link
Author

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
Copy link
Owner

aresch commented May 22, 2016

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

@ahicks92
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants