ModuleNotFoundError: No module named '_beatbox'

773 Views Asked by At

I am trying to use python to connect with SF. Saw some articles that show how to use it with beatbox library and I did install it. However when trying to run simple code I'm getting error below.

Traceback (most recent call last):
  File "c:/Users/user/hello/.vscode/hello.py", line 16, in <module>
    import beatbox
  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\beatbox\__init__.py", line 1, in <module>
    from _beatbox import _tPartnerNS, _tSObjectNS, _tSoapNS, SoapFaultError, SessionTimeoutError
ModuleNotFoundError: No module named '_beatbox'

I navigate to the folder where the beatbox is installed and I see there the file _beatbox.py. I think the file __init__.py try to import _beatbox but cannot find it for some reason. Any idea how to solve it? What I'm missing?

Code:

import beatbox

sf_username = "xxxxxx"
sf_password = "xxxxxx"
sf_token = "xxxxxx"

def getAccount():
  sf = beatbox._tPartnerNS
  sf_client = beatbox.PythonClient()
  password = str("%s%s" % (sf_password, sf_token))
  sf_client.login(sf_username, sf_password)
  accQuery = "Select Id,Name From Account limit 5"
  queryResult = sf_client.query(accQuery)
  print ("query result: " + str(queryResult[sf.size]))
  for rec in queryResult[sf.records:]:
    print str(rec[2]) + " : " + str(rec[3])

  return
3

There are 3 best solutions below

0
Liron C On

Can close the case. I first found that in python 3+ should use beatbox3. But then found additional errors (possible compatibility issues).

Since I notice it taking me too long, instead I tried using library simple-salesforce 0.74.2 to connect, and it worked perfect.

0
Lucas On

Probably, Python does not know where to search for the module. By default, only the sitepackages directory and your working directory is searched. You can resove this by placing a symbolic link to the beatbox package or moving it to the sitepackages directory

0
Justin Van Wart On

If you change the sitepackage folder name from "beatbox" to "_beatbox" this will solve your problem. You can then import it as: "import beatbox" and it will load in Python.