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

Add support for Python 3.6 #2331

Closed
htgoebel opened this issue Dec 26, 2016 · 21 comments
Closed

Add support for Python 3.6 #2331

htgoebel opened this issue Dec 26, 2016 · 21 comments
Labels

Comments

@htgoebel
Copy link
Member

Of course we plan to implement support for Python 3.6. But all maintainers are short in time. If you want to help (by submitting pull-requests ;-), please get in touch.

@ghost
Copy link

ghost commented Dec 26, 2016

It would probably be helpful to go ahead and add Python 3.6 to the tests, considering that the "nightly" build has been changed to Python 3.7.

<ramble>
Since Python 2.7 is going to be supported until 2020, it would seem that the amount of valid syntax would contract with each new release of Python until Python 2.7 is eventually phased out. Following this trend, it would eventually become difficult to have anything that works on both Python 2.7 and whatever the latest version is.
</ramble>

@ghost
Copy link

ghost commented Dec 31, 2016

Okay, so to start off, modulegraph needs to be updated to work with Python 3.6. We essentially have two options:

  1. We can do twice the work and have the same module maintained in two places (PyInstaller devs and modulegraph devs). I have started on this.
  2. We can use the official modulegraph that has already been adjusted to run on Python 3.6 and would no longer have to expend additional effort on maintaining it.

It seems obvious to me to go with option number two, but what are your thoughts? There was a note about not using the official modulegraph until Issue #28 was fixed, but what I want to know is why the PyInstaller version does not suffer from this problem.

@htgoebel
Copy link
Member Author

We are maintaining our own version of modulegraph, for several reasons I don't remember at the very moment. One of these reasons is that we had the impression that there is slow or even no progress on modulegraph but it is one of our core components. Thus we decided that it's easier to backport eventual changes from upstream. You may find ports of this discussion in some issues or on the mailinglist.

And we already diverged from upstream, see the history of PyInstaller/lib/modulegraph/.

@ghost ghost mentioned this issue Dec 31, 2016
@gpraceman
Copy link

Is there a target date for adding Python 3.6 support?

@ghost
Copy link

ghost commented Jan 6, 2017

@gpraceman Right now the biggest issue is third party libraries that don't have wheels available for Python 3.6.

@ProjectThreepio
Copy link

ProjectThreepio commented Feb 1, 2017

I believe PyCrypto is also an issue for the bytecode encryption feature. I'd imagine this would involve migrating to something like pycryptodome. The current version of PyInstaller does not work with pycryptodome, and AFAICT PyCrypto doesn't work with Python 3.6. Even if it's possible to make PyCrypto work on 3.6, it's probably a very good idea to move to a maintained project like pycryptodome. PyCrypto is abandoned.

Looks like a separate bug is filed here: #2365

@ThomasWaldmann
Copy link
Contributor

Python 3.6.1 is out, pity one can't jump on it with pyinstaller.

@htgoebel
Copy link
Member Author

Python 3.6.1 is out, pity one can't jump on it with pyinstaller.

You can: Simple use the development version (and don't use pandas, since it recurses to deep)

@ThomasWaldmann
Copy link
Contributor

@htgoebel Thanks for clarifying, I got a totally different impression from this ticket.

So it maybe needs to be broken into some smaller tickets for the remaining todo and the main ticket about py36 support in general being closed as fixed?

@ghost
Copy link

ghost commented Mar 22, 2017

I've already opened smaller tickets (see here), and many of them have been closed (aside from recursion issues). About the only thing left is idlelib at this point.

@Pitta
Copy link

Pitta commented Jun 7, 2017

Surprised this isn't supported - Just ran into this issue today.

IndexError: tuple index out of range

On Ubuntu, OSX, and Windows

@ghost
Copy link

ghost commented Jun 7, 2017 via email

@chadkennedyonline
Copy link

@htgoebel @xoviat Just wanted to let you guys know I submitted a PR #2642 for the idlelib issue #2361 which is the only open one marked with the "PY3.6" tag besides this one. My hope is to help get PyInstaller compatible with 3.6. Please let me know if that PR is acceptable, and if there are any further issues blocking 3.6 compatibility.

@ErikBjare
Copy link
Contributor

ErikBjare commented Aug 16, 2017

With those issues closed, is there anything left to do? There is no other open issue on the PY3.6 tag.

Proposing a close.

Edit: Ping @htgoebel

@htgoebel
Copy link
Member Author

Good idea :-)

@tarocco
Copy link

tarocco commented Nov 27, 2017

This is still a problem on Windows because pycrypto is deprecated in Python 3.6 and won't compile under Windows. As @ProjectThreepio suggested, moving to pycryptodome is probably not a bad move, but as I researched it (and contrary to how pycryptodome is advertised) it is not a simple drop-in replacement (it is non-trivial). My personal, temporary solution is to stick with Python 3.5.

@ErikBjare
Copy link
Contributor

@tarocco Switching to pycryptodome seems like the best approach despite the difficulties, but I'm curious how it is non-trivial to switch? How isn't it a drop-in replacement as advertised?

Regardless, I'm happy the seldom-used bytecode encryption feature wasn't considered a blocker for the 3.6 supporting release.

@tarocco
Copy link

tarocco commented Nov 28, 2017

@ErikBjare I must have missed an option to disable the feature and dependency on pycrypto, if that's what you mean. I was not able to get pyinstaller working on Win 10 + Python 3.6. 🙁

For what I'm doing I wouldn't need bytecode encryption, so I would like to know if there's a way to skip the pycrypto stuff.

I tried installing pycryptodome and it was not a polyfil, and so it did not automatically stand in for pycrypto imports. From just some comments I read somewhere, there were difficulties using it as a drop-in replacement. But maybe it was an exaggeration. I haven't looked into doing it myself.

@ErikBjare
Copy link
Contributor

ErikBjare commented Nov 28, 2017

A friend actually used pycryptodome over pycrypto just the other day (but on macOS). He had some issues but then he uninstalled pycrypto and pycryptodome, reinstalled pycryptodome and everything worked. I think this is a common source of problems: You can't have both installed and if you do the error messages are unclear.

Weird that you can't get it working, I'm pretty sure we have automated Windows 10 builds working for @ActivityWatch with 3.6.

Edit: Nevermind, we never switched to using 3.6 on Windows.

@htgoebel
Copy link
Member Author

@ErikBjare @tarocco See #2365. esp. the Note:

Maintainer note: If you want this to be fixed, please place an adequate(!) bounty or submit a pull-request. The requirement for byte-encryption is a commercial one (free software does not require byte-encryption since the cod is available anyway). So if you are earning money with using PyInstaller you should take parts of the development.

@tarocco
Copy link

tarocco commented Dec 5, 2017

No problem @htgoebel. It was just a part of the cefpython example I was working with, anyway. This makes sense to me 🙂

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 17, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

8 participants