0
votes

I don't know how to Summarize or Format the problem, I am providing the error


Traceback (most recent call last): File "push.py", line 1, in from pyrebase import pyrebase File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyrebase__init__.py", line 1, in from .pyrebase import initialize_app File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyrebase\pyrebase.py", line 17, in from oauth2client.service_account import ServiceAccountCredentials File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\oauth2client\service_account.py", line 25, in from oauth2client import client File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\oauth2client\client.py", line 45, in from oauth2client import crypt File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\oauth2client\crypt.py", line 55, in from oauth2client import _pycrypto_crypt File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\oauth2client_pycrypto_crypt.py", line 17, in from Crypto.PublicKey import RSA File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pycrypto-2.6.1-py3.7-win32.egg\Crypto\PublicKey\RSA.py", line 75, in from Crypto.Util.number import getRandomRange, bytes_to_long, long_to_bytes File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pycrypto-2.6.1-py3.7-win32.egg\Crypto\Util\number.py", line 139 value = 2L ** (N-1) # Ensure high bit is set ^ SyntaxError: invalid syntax


I had errors installing Pyrebase so I am currently using Pyrebase4 I also tried installing PyCryptoDome and then installing Pyrebase manually after configuring to avoid versioning error This is my code:

import pyrebase

config={keys and all go here}

firebase=pyrebase.initialize_app(config)
db=firebase.database()

db.child("names").push({"name":"Abhinav"})

Expected to push data to Firebase

1
If you're getting a syntax error in a third-party library, it usually means you're using a different version of Python than the library is compatible with.Barmar
@Barmar I agree. I spent some time looking at the library's github repo, hoping to confirm that it wasn't compatible with Python 3 - but I couldn't see any sign of this, or see any syntax error near the highlighted line. However it became apparent that the library has not been maintained for 5 years, so it's probably not a good idea to be using it anyway.Robin Zigmond
In fact, it specifically says PyCrypto is written and tested using Python version 2.1 through 3.3.Barmar
Could you paste the traceback with proper formatting? There a ^ that points to where the invalid syntax is, but it's not helpful when you wrap all the lines.Barmar
missed that, thanks @Barmar. (I didn't realise changes of 3.x version could cause syntax errors though, just possibly different APIs in some modules.)Robin Zigmond

1 Answers

0
votes

Change

value = 2L ** (N-1)

to

value = 2 ** (N-1)

Python 3 doesn't have long integers, all integers are unlimited precision.

You may need to search the rest of the code for other long integers. You can use a regexp \dL to find them.