Python Forum

Full Version: web3 method
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
installed web3 api and cannot get it recognized.
from web3 import Web3
nonce = web3.eth.getTransactionCount(acct1)
error = instance of 'Web3' has no 'eth' member
I guess your own file is named web3.py, right? Because otherwise you will get NameError. Note that you import Web3 (with capital W) from web3 (with lower w). Then in your code you use web3 (with lower w and it is not imported)
file name is contract.py

from web3 import Web3
#from solc import compile_source
#from web3.contract import ConciseContract
#from web3.auto import Web3, EthereumTesterProvider

# code here
ganache_url = "http://127.0.0.1:7545"
web3 = Web3(Web3.HTTPProvider(ganache_url))

acct1 = "REMOVED"
acct2 = "REMOVED"

private_key = "REMOVED"

nonce = web3.eth.getTransactionCount(acct1)

tx = {
    'nonce': nonce,
    'to'   : acct2,
    'value': web3.toWei(1, 'ether'),
    'gas'  : 2000000,
    'gasPrice': web3/toWei('50', 'gwei')
}

signed_tx = web3.eth.account.signTransaction(tx, private_key)
tx_hash   = web3.eth.sendRawTransaction(signed_tx.sendRawTransaction)
print(tx_hash)
I think the problem is you use web3 as variable name and it conflicts with the module name. use something different, e.g. w3.
That said, I am not sure when you want to use Web3 instance and when web3.eth. Docs is also bit confusing in this respect, e.g. Web3.eth redirects to wb3.eth