shotgunsoftware / python-api

A Python-based library for accessing Flow Production Tracking API.
https://developer.shotgridsoftware.com/python-api
Other
306 stars 198 forks source link

Installation does not work for Python 3.7 #227

Closed KelSolaar closed 4 years ago

KelSolaar commented 4 years ago

Hi,

Even though Python 3.7 is specified as a requirement, the install does not work with it:

> D:\python-api-3.2.3\python-api-3.2.3>python setup.py install --user
running install
running bdist_egg
running egg_info
creating shotgun_api3.egg-info
writing shotgun_api3.egg-info\PKG-INFO
writing dependency_links to shotgun_api3.egg-info\dependency_links.txt
writing top-level names to shotgun_api3.egg-info\top_level.txt
writing manifest file 'shotgun_api3.egg-info\SOURCES.txt'
reading manifest file 'shotgun_api3.egg-info\SOURCES.txt'
writing manifest file 'shotgun_api3.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\shotgun_api3
copying shotgun_api3\shotgun.py -> build\lib\shotgun_api3
copying shotgun_api3\__init__.py -> build\lib\shotgun_api3
creating build\lib\shotgun_api3\lib
copying shotgun_api3\lib\mimetypes.py -> build\lib\shotgun_api3\lib
copying shotgun_api3\lib\sgsix.py -> build\lib\shotgun_api3\lib
copying shotgun_api3\lib\sgtimezone.py -> build\lib\shotgun_api3\lib
copying shotgun_api3\lib\six.py -> build\lib\shotgun_api3\lib
copying shotgun_api3\lib\xmlrpclib.py -> build\lib\shotgun_api3\lib
copying shotgun_api3\lib\__init__.py -> build\lib\shotgun_api3\lib
creating build\lib\shotgun_api3\lib\httplib2
copying shotgun_api3\lib\httplib2\__init__.py -> build\lib\shotgun_api3\lib\httplib2
creating build\lib\shotgun_api3\lib\mockgun
copying shotgun_api3\lib\mockgun\errors.py -> build\lib\shotgun_api3\lib\mockgun
copying shotgun_api3\lib\mockgun\mockgun.py -> build\lib\shotgun_api3\lib\mockgun
copying shotgun_api3\lib\mockgun\schema.py -> build\lib\shotgun_api3\lib\mockgun
copying shotgun_api3\lib\mockgun\__init__.py -> build\lib\shotgun_api3\lib\mockgun
creating build\lib\shotgun_api3\lib\httplib2\python2
copying shotgun_api3\lib\httplib2\python2\certs.py -> build\lib\shotgun_api3\lib\httplib2\python2
copying shotgun_api3\lib\httplib2\python2\iri2uri.py -> build\lib\shotgun_api3\lib\httplib2\python2
copying shotgun_api3\lib\httplib2\python2\socks.py -> build\lib\shotgun_api3\lib\httplib2\python2
copying shotgun_api3\lib\httplib2\python2\__init__.py -> build\lib\shotgun_api3\lib\httplib2\python2
creating build\lib\shotgun_api3\lib\httplib2\python3
copying shotgun_api3\lib\httplib2\python3\certs.py -> build\lib\shotgun_api3\lib\httplib2\python3
copying shotgun_api3\lib\httplib2\python3\iri2uri.py -> build\lib\shotgun_api3\lib\httplib2\python3
copying shotgun_api3\lib\httplib2\python3\socks.py -> build\lib\shotgun_api3\lib\httplib2\python3
copying shotgun_api3\lib\httplib2\python3\__init__.py -> build\lib\shotgun_api3\lib\httplib2\python3
copying shotgun_api3\lib\httplib2\python2\cacerts.txt -> build\lib\shotgun_api3\lib\httplib2\python2
copying shotgun_api3\lib\httplib2\python3\cacerts.txt -> build\lib\shotgun_api3\lib\httplib2\python3
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\shotgun_api3
creating build\bdist.win-amd64\egg\shotgun_api3\lib
creating build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2
creating build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
copying build\lib\shotgun_api3\lib\httplib2\python2\cacerts.txt -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
copying build\lib\shotgun_api3\lib\httplib2\python2\certs.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
copying build\lib\shotgun_api3\lib\httplib2\python2\iri2uri.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
copying build\lib\shotgun_api3\lib\httplib2\python2\socks.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
copying build\lib\shotgun_api3\lib\httplib2\python2\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2
creating build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\python3\cacerts.txt -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\python3\certs.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\python3\iri2uri.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\python3\socks.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\python3\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3
copying build\lib\shotgun_api3\lib\httplib2\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2
copying build\lib\shotgun_api3\lib\mimetypes.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
creating build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun
copying build\lib\shotgun_api3\lib\mockgun\errors.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun
copying build\lib\shotgun_api3\lib\mockgun\mockgun.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun
copying build\lib\shotgun_api3\lib\mockgun\schema.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun
copying build\lib\shotgun_api3\lib\mockgun\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun
copying build\lib\shotgun_api3\lib\sgsix.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
copying build\lib\shotgun_api3\lib\sgtimezone.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
copying build\lib\shotgun_api3\lib\six.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
copying build\lib\shotgun_api3\lib\xmlrpclib.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
copying build\lib\shotgun_api3\lib\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3\lib
copying build\lib\shotgun_api3\shotgun.py -> build\bdist.win-amd64\egg\shotgun_api3
copying build\lib\shotgun_api3\__init__.py -> build\bdist.win-amd64\egg\shotgun_api3
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2\certs.py to certs.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2\iri2uri.py to iri2uri.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2\socks.py to socks.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python2\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3\certs.py to certs.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3\iri2uri.py to iri2uri.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3\socks.py to socks.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\python3\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\httplib2\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\mimetypes.py to mimetypes.cpython-37.pyc
  File "build\bdist.win-amd64\egg\shotgun_api3\lib\mimetypes.py", line 571
    print USAGE
              ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(USAGE)?

byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun\errors.py to errors.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun\mockgun.py to mockgun.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun\schema.py to schema.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\mockgun\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\sgsix.py to sgsix.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\sgtimezone.py to sgtimezone.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\six.py to six.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\xmlrpclib.py to xmlrpclib.cpython-37.pyc
  File "build\bdist.win-amd64\egg\shotgun_api3\lib\xmlrpclib.py", line 191
    MAXINT =  2L**31-1
               ^
SyntaxError: invalid syntax

byte-compiling build\bdist.win-amd64\egg\shotgun_api3\lib\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\shotgun.py to shotgun.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\shotgun_api3\__init__.py to __init__.cpython-37.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying shotgun_api3.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying shotgun_api3.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying shotgun_api3.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying shotgun_api3.egg-info\not-zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
copying shotgun_api3.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
creating dist
creating 'dist\shotgun_api3-3.2.3-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing shotgun_api3-3.2.3-py3.7.egg
creating c:\users\thomas\appdata\roaming\python\python37\site-packages\shotgun_api3-3.2.3-py3.7.egg
Extracting shotgun_api3-3.2.3-py3.7.egg to c:\users\thomas\appdata\roaming\python\python37\site-packages
  File "c:\users\thomas\appdata\roaming\python\python37\site-packages\shotgun_api3-3.2.3-py3.7.egg\shotgun_api3\lib\mimetypes.py", line 571
    print USAGE
              ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(USAGE)?

  File "c:\users\thomas\appdata\roaming\python\python37\site-packages\shotgun_api3-3.2.3-py3.7.egg\shotgun_api3\lib\xmlrpclib.py", line 191
    MAXINT =  2L**31-1
               ^
SyntaxError: invalid syntax

Adding shotgun-api3 3.2.3 to easy-install.pth file

Installed c:\users\thomas\appdata\roaming\python\python37\site-packages\shotgun_api3-3.2.3-py3.7.egg
Processing dependencies for shotgun-api3==3.2.3
Finished processing dependencies for shotgun-api3==3.2.3

Any plan to update the vendored modules/packages?

Cheers,

Thomas

jfboismenu commented 4 years ago

Hi!

Unfortunately we can't update some of those libraries. Some of those vendors, namely httplib2, have two sets of sources, one for Python 2 and one for Python 3, which are not compatible with certain versions of Python. xmlrpclib is the exception here. I think it could have been removed as we do not use it anywhere in our code.

Note that the library was still installed and is usable. The errors you are seeing are warnings that bytecode couldn't be compiled for some files.

Have you considered pip installing the package instead of using setup.py directly? That method does install the library without spitting out any warnings, since it doesn't attempt to byte compile the sources. It doesn't solve the underlying problem, but it does provide a cleaner install experience that doesn't make the user think something went wrong.

JF

KelSolaar commented 4 years ago

Hello @jfboismenu,

Right that makes sense, I was thinking about just patching them so that they byte-compile basically. Might not be worth the effort.

Given that setuptools is somehow standard in the Python world, would it be worth adding some warnings in the README file and/or http://developer.shotgunsoftware.com/python-api/installation.html stating that using the usual python setup.py install method does not work?

Cheers,

Thomas

jfboismenu commented 4 years ago

Yeah, that might work. I'll try and track why we haven't removed xmlrpclib. We're in the process of updating httplib2 so maybe that new version will byte-compile?

jfboismenu commented 4 years ago

Well, that was quick. It still won't byte-compile. I'll add a mention in the README.md about the issue however. Thanks for your suggestion!