I am trying to create account for a user using web3.py in my local testrpc ethereum network. I have tried as per the documentation. But I am getting the error

AttributeError: 'Eth' object has no attribute 'account'

Code I am trying :

from web3 import Web3 w3 = Web3(YOUR_PROVIDER) acct = w3.eth.account.create('KEYSMASH FJAFJKLDSKF7JKFDJ 1530')

I could see there is accounts object in for eth object but that is not what I need.

What am I doing wrong ? I could see there is another type of account which is called PersonalAccount in the doc

What is the difference between these two ?

2 Answers 2


Update: web3.py v4 has been stable for a while, so the question and answer don't really make sense anymore. w3.eth.account is included in any modern install.

In order to use the latest w3.eth.account feature, you will have to either:

  • Wait for the v4 beta to come out (in the next week or so)
  • Install web3.py from source

Installing from source

git clone https://github.com/pipermerriam/web3.py.git
cd web3.py

virtualenv -p python3 venv
. venv/bin/activate

pip install -e .
>>> from web3 import Web3, ...

Documentation Info

The web3 documentation you're referring to is for "latest", which corresponds to the source code on master at http://github.com/pipermerriam/web3.py

To see what features are available in v3, see the stable web3 documentation instead.


There are multiple Ethereum libraries for Python, try using this one https://github.com/pipermerriam/web3.py I didn't have good luck with the consensus one.

The docs list eth.account.create http://web3py.readthedocs.io/en/latest/web3.eth.account.html

git clone [email protected]:pipermerriam/web3.py.git

cd web3.py

virtualenv venv .


pip install -r requirements-dev.txt

pip install -e .

python from web3 import Web3

web3 = Web3(HTTPProvider('http://localhost:8545'))


  • Thanks Matthew. We are using the pipermerriam only. The doc link I have specified above is of same. Commented Nov 14, 2017 at 6:50
  • I added a bigger sample. Its likely you have wrong web3 in your virtual env. See above if you do the sample above this works web3.eth.account.create("asdf") however it doesn't work in my global python cause of a wrong dependency Commented Nov 14, 2017 at 9:33
  • No I have the correct web3 I think. I even tried with pip install web3==3.16.1 on a seperate virtualenv. I am getting the below error while running pip install -e . python from web3 import Web3 Could not find a version that satisfies the requirement python (from versions: ) No matching distribution found for python Commented Nov 14, 2017 at 10:08
  • Did you try the Singular Account? web3.eth.account.create("asdf") Commented Nov 14, 2017 at 14:24
  • I could not complete the steps you mentioned. As in the above comment. Failed on the pip install -e . python from web3 import Web3 step. Commented Nov 14, 2017 at 14:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.