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.