GithubHelp home page GithubHelp logo

ranaroussi / pywallet Goto Github PK

View Code? Open in Web Editor NEW
436.0 23.0 181.0 283 KB

Dead-simple BIP32 (HD) wallet creation for BTC, BTG, BCH, LTC, DASH, USDT, QTUM and DOGE

License: MIT License

Python 100.00%
bip32 hdwallet wallet-generator bitcoin-wallet ethereum-wallet btc eth bch dashcoin dogecoin

pywallet's Introduction

PyWallet

Python version

PyPi version

PyPi status

Simple BIP32 (HD) wallet creation for: BTC, BTG, BCH, ETH, LTC, DASH, DOGE

BIP32 (or HD for "hierarchical deterministic") wallets allow you to create child wallets which can only generate public keys and don't expose a private key to an insecure server.

This library simplify the process of creating new wallets for the BTC, BTG, BCH, ETH, LTC, DASH and DOGE cryptocurrencies.

Most of the code here is forked from:

I simply added support for a few more cryptocurrencies (BCH, BTG, DASH), as well as created methods to simplify the creation of HD wallets and child wallets.

Enjoy!


Installation

Install via PiP:

$ sudo pip install pywallet

Example code:

Create HD Wallet

The following code creates a new Bitcoin HD wallet:

# create_btc_wallet.py

from pywallet import wallet

# generate 12 word mnemonic seed
seed = wallet.generate_mnemonic()

# create bitcoin wallet
w = wallet.create_wallet(network="BTC", seed=seed, children=1)

print(w)

Output looks like this:

$ python create_btc_wallet.py

{
  "coin": "BTC",
  "seed": "guess tiny intact poet process segment pelican bright assume avocado view lazy",
  "address": "1HwPm2tcdakwkTTWU286crWQqTnbEkD7av",
  "xprivate_key": "xprv9s21ZrQH143K2Dizn667UCo9oYPdTPSMWq7D5t929aXf1kfnmW79CryavzBxqbWfrYzw8jbyTKvsiuFNwr1JL2qfrUy2Kbwq4WbBPfxYGbg",
  "xpublic_key": "xpub661MyMwAqRbcEhoTt7d7qLjtMaE7rrACt42otGYdhv4dtYzwK3RPkfJ4nEjpFQDdT8JjT3VwQ3ZKjJaeuEdpWmyw16sY9SsoY68PoXaJvfU",
  "wif": "L1EnVJviG6jR2oovFbfxZoMp1JknTACKLzsTKqDNUwATCWpY1Fp4",
  "children": [{
     "address": "1E3btRwsoJx2jUcMnATyx7poHhV2tomL8g",
     "path": "m/0",
     "xpublic_key": "xpub69Fho5TtAbdoXyWzgUV1ZYst9K4bVfoGNLZxQ9u5js4Rb1jEyUjDtoATXbWvAcV8cERCMMnH8wYRVVUsRDSfaMjLqaY3TvD7Am9ALjq5PsG",
     "wif": "KysRDiwJNkS9VPzy1UH76DrCDizsWKtEooSzikich792RVzcUaJP"
 }]
}

Similarly, you can do the same for an Ethereum wallet:

# create_eth_wallet.py

from pywallet import wallet

seed = wallet.generate_mnemonic()
w = wallet.create_wallet(network="ETH", seed=seed, children=1)

print(w)

Output looks like this (no WIF for Ethereum):

$ python create_eth_wallet.py

{
  "coin": "ETH",
  "seed": "traffic happy world clog clump cattle great toy game absurd alarm auction",
  "address": "0x3b777f60eb04fcb13e6b27e468532e491409722e",
  "xprivate_key": "xprv9yTuSjwb95QZznV6epMWpb4Kpc2S8ZRaQuAf5B697YXtQD2tDmmJ5KvwJWVjtbVrdJ1WBKNnuodrpTKGfHfiPSEgrAxUjL5RP1gQwwT3fFx",
  "xpublic_key": "xpub6GhhMtkVjoPi5DKtqapKzMzrzdGjo1EPc7Ka6KdeoXYdCrTBH1Hu1wKysm8boWSy8VeTKVJi6gQJ2qJ4YG2ZhvFDcUUgMJrFCJWN1PGtBry",
  "wif": "",
  "children": [{
    "address": "0x87eb82d43fa7316df0a989c0d951a9037ed02f9b",
    "path": "m/0",
    "xpublic_key": "xpub6LnpVXD73jNuAYXxzQCnEY6wXQspwkiAEkZWoX4BW9Tzx6KbUrMUYAU1Yvw4kebPHSPiEJPo8irHWHSwQR6WuVwUj85xURsugPWeJVH6sau",
    "wif": ""
  }]
}

* Valid options for network are: BTC, BTG, BCH, LTC, DASH, DOGE

Create Child Wallet

You can create child-wallets (BIP32 wallets) from the HD wallet's Extended Public Key to generate new public addresses without revealing your private key.

Example:

# create_child_wallet.py

from pywallet import wallet

WALLET_PUBKEY = 'YOUR WALLET XPUB'

# generate address for specific user (id = 10)
user_addr = wallet.create_address(network="BTC", xpub=WALLET_PUBKEY, child=10)

# or generate a random address, based on timestamp
rand_addr = wallet.create_address(network="BTC", xpub=WALLET_PUBKEY)

print("User Address\n", user_addr)
print("Random Address\n", rand_addr)

Output looks like this:

$ python create_child_wallet.py

User Address
{
  "address": "13myudz3WhpBezoZue6cwRUoHrzWs4vCrb",
  "path": "m/0/395371597"
}
Random Address
{
  "address": "1KpS2wC5J8bDsGShXDHD7qdGvnic1h27Db",
  "path": "m/0/394997119"
}

IMPORTANT

I highly recommend that you familiarize yourself with the Blockchain technology and be aware of security issues. Reading Mastering Bitcoin and going over Steven Buss's security notes on the Bitmerchant repository is a good start.

Enjoy!

pywallet's People

Contributors

arshbot avatar halfss avatar hardtack avatar icodeface avatar joemarct avatar kurotych avatar ranaroussi avatar sirmaahe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pywallet's Issues

Support for USDC

We are evaluating the use of the library for a project. Our requirement is to generate wallets for Bitcoin and USDC.

what is meaning of parameter WALLET_PUBKEY

the README.md has code for example:
user_addr = wallet.create_address(network="BTC", xpub=WALLET_PUBKEY, child=10)

xpub is a constant,but I don't know how to padding it ? for example xpub ="BTC" ? or other ?

search address and response address is different

I used pywallet (version: pywallet.py 1.1) web interface to get info for this address from a bitcoin core wallet: 1mRPTqz1dhDbTkz5p63LPCv4XaGofVWhn

Pywallet responded with this:
Address (Bitcoin): 12nYPfaVHAMfuxMSyx6sBnzNFMHFymFR8o
Privkey (Bitcoin): 5H...
Hexprivkey:
Hash160:
Pubkey: 0484794930fa32ea6fd53c89aa2244f15916c1f248db7a02007f9f53c496dea3d69d5b0445f60678a3dbae27f01078e4a60b40a7c05c466b4034609236ace4950d

Why is the key different? My objective is to get the private key for the above public key.

Support for ERC-20 tokens

I thought about a general ERC20 compatibility. To provide the use of a really wide variety of tokens with a generalized standard.

ERC20?

Does this wallet support ERC20 tokens?

omni network Prefix and coin type bug

omni network Prefix bug
https://github.com/ranaroussi/pywallet/blob/master/pywallet/network.py 54 and 55

SCRIPT_ADDRESS = 0x00 # int(0x00) = 0

image

omnicore source code
https://github.com/OmniLayer/omnicore/blob/develop/src/chainparams.cpp 128 and 129
https://github.com/OmniLayer/omnicore/blob/c0738a96b587c80a73f93cb653c032e1cc95b6f4/src/chainparams.cpp#L128
image

SLIP-0044 : Registered coin types for BIP-0044
Omni Coin type is “200” ,omni BIP32_PATH: "m/44'/200'/..."
https://github.com/satoshilabs/slips/blob/master/slip-0044.md

Suport for BIP49 ypub for wallet.create_address

Can you add support for BIP49 segwit addresses?

It uses a new BIP32 Extended Public Key format.

For example, the Extended Public Key ypub6ZNNVLvwe6gJsPyNiukiYEgVWvdeP3M5xx1qGzTo67FiEFJvcCB6ApXZTLBiuMiKhvNfmdcssJ3MbLMQfWjgbJ9dHHMrWxx6Vkb93r7Zb3y
generates these address:

m/49'/0'/0'/0/0 39kb8ZPfyj2QsbdEGSCUuAZxXsJpC6sx4c
m/49'/0'/0'/0/1 32yn1GcQpYLdGtFCTKSNiXdhHgGyQPQKSx
m/49'/0'/0'/0/2 3FLXaYJfn5iozDtWvCmwwPRkViMBgRsZ8P
m/49'/0'/0'/0/3 38qQ1Mhi6BDQEGQR4n4jwH93uRbTy19CNe
m/49'/0'/0'/0/4 37oJY4zyjd7h34gsdDGR9vN1aLBYDEhmSh
m/49'/0'/0'/0/5 35etreLmK43naK9kqkMJp1iJFEUnxHfdRG
m/49'/0'/0'/0/6 3Ft5hWpSPChT8EFaFdW4FDzxEJ9YkxDDRq
m/49'/0'/0'/0/7 39uXxCT6kGxPYwtKyiXx1jPYxJX8RUTgFS
m/49'/0'/0'/0/8 3NGKHXYN7CP9ZzPkz1pnWZmbNUhiKy8vfB
m/49'/0'/0'/0/9 342ywv1E7VoQH9PHfNK2VCZh1VBoKfxGWC

Bitcoin Cash addresses not valid

Addresses generated using the Bitcoin Cash (BCH) network are not valid, while they are when using the Bitcoin Core (BTC) network.

Here is an example of returned addresses running the following code:

from pywallet import wallet
import pprint as pp

# generate 24 word mnemonic seed
seed = wallet.generate_mnemonic(strength=256)

w = wallet.create_wallet(network='BCH', seed=seed, children=10)

pp.pprint(w)

Returns:

...
{'address': 'CNzDhHkL3B5ubi5439mi57HgQD8UKQKFvA',
 'children': [{'address': 'CPFDNsRBFDqRKBqx3v1oqtya9NcdoaJaVr',
              {'address': 'CHwdg1ud5UGEGH5zPdSFTDNqq8yL8WoqZZ',
              {'address': 'CSKzN9vteXumbeLLtmuqxS1GYLMfBwxd6N',
              {'address': 'CTmbWvsnc6MSJ7t2Zi7WhJ3oxptE76GFJJ',
              {'address': 'Cb1CuvHuEdPVKYVfMRXzoxe18EYLtg76vF',
              {'address': 'CfmWPcgkLR56N4XwHYaEhXVEhMiXoaSvuw',
              {'address': 'CaQEjsCHHMy7mWmkFMvwCu1Ma13nd1tybL',
              {'address': 'CZQ5KpGKc5ubjWQ2GN8ScKizkpKXRdnfhP',
              {'address': 'CYpSm7iWdapD8aWuXecBVpn8cSWr57mfRY',
              {'address': 'CdqVNvBWK4BC6EPVQZ54A4pvGxGpQVs6Re',
...

Which are not valid Bitcoin addresses.

os error

Traceback (most recent call last):
File "create_eth_wallet.py", line 1, in
from pywallet import wallet
File "/usr/local/lib/python2.7/dist-packages/pywallet/wallet.py", line 5, in
from .utils import (
File "/usr/local/lib/python2.7/dist-packages/pywallet/utils/init.py", line 5, in
from .ethereum import (
File "/usr/local/lib/python2.7/dist-packages/pywallet/utils/ethereum.py", line 20, in
from two1.bitcoin.utils import bytes_to_str
File "/usr/local/lib/python2.7/dist-packages/two1/bitcoin/init.py", line 19, in
from .block import BlockHeader
File "/usr/local/lib/python2.7/dist-packages/two1/bitcoin/block.py", line 7, in
from two1.bitcoin.txn import Transaction
File "/usr/local/lib/python2.7/dist-packages/two1/bitcoin/txn.py", line 7, in
from two1.bitcoin import crypto
File "/usr/local/lib/python2.7/dist-packages/two1/bitcoin/crypto.py", line 18, in
bitcoin_curve = secp256k1()
File "/usr/local/lib/python2.7/dist-packages/two1/crypto/ecdsa_openssl.py", line 449, in init
super().init(hashlib.sha256)
TypeError: super() takes at least 1 argument (0 given)
Exception AttributeError: "'secp256k1' object has no attribute '_lc'" in <bound method secp256k1.del of <two1.crypto.ecdsa_openssl.secp256k1 object at 0x7fb4ecabd610>> ignored

cannot import name 'encode_hex'

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.7/site-packages/pywallet/wallet.py", line 5, in <module>
    from .utils import (
  File "/usr/local/lib/python3.7/site-packages/pywallet/utils/__init__.py", line 5, in <module>
    from .ethereum import (
  File "/usr/local/lib/python3.7/site-packages/pywallet/utils/ethereum.py", line 28, in <module>
    from rlp.utils import encode_hex
ImportError: cannot import name 'encode_hex' from 'rlp.utils' (/usr/local/lib/python3.7/site-packages/rlp/utils.py)

Remove two1 dependency

The two1 library required in this package has been inactive for 3 years and has issues (like 21dotco/two1-python#29) that causes problems for projects using it.

As far as I checked, the dependency on two1 is limited to a few functions. If you confirm, I can provide the pull request for inlining those needed functions in pywallet code?

Issue in consistency

There is an issue with consistency, using the same seed words and same derivation path generate a different address each time. This makes the lib very unreliable. I tried debugging the issue but couldn't figure it out.

Thank you for the lib @ranaroussi

Hint: make sure your test modules/packages have valid Python names.

Hint: make sure your test modules/packages have valid Python names.
Traceback:
test_prime.py:4: in <module>
    from pywallet import wallet
..\pywallet\wallet.py:5: in <module>
    from .utils import (
..\pywallet\utils\__init__.py:5: in <module>
    from .ethereum import (
..\pywallet\utils\ethereum.py:30: in <module>
    from Crypto.Hash import keccak
E   ModuleNotFoundError: No module named 'Crypto'

I tried also with pip installation

sudo pip install pywallet

How to get private key from ethereum wallet?

This package is good to me. Using this package, I generated ethereum wallet.
Here, private key is as follow.
0488ade4039c7ed931800000009f85cde1810467f199d7e0b6b2edaa6bc2f960b66ea61af9e35477c50e2243da00494c713bd615f7bef54adca9292cbd86e9f077e6a0ee33553258a2d961793a4e

But when I send transaction using web3.py, required private key has 32 bytes long.
Above key is too long. I can't use this. How can I get private key to be required to send transaction?
Help me.

Non working lib?

Hi!

I've tried install on virtualenv on OSX and Linux, via pip, but on both i got the same error importing the lib

>>> from pywallet import wallet

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/pywallet/wallet.py", line 5, in <module>
    from .utils import (
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/pywallet/utils/__init__.py", line 5, in <module>
    from .ethereum import (
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/pywallet/utils/ethereum.py", line 19, in <module>
    from two1.bitcoin.utils import bytes_to_str
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/two1/bitcoin/__init__.py", line 19, in <module>
    from .block import BlockHeader
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/two1/bitcoin/block.py", line 7, in <module>
    from two1.bitcoin.txn import Transaction
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/two1/bitcoin/txn.py", line 7, in <module>
    from two1.bitcoin import crypto
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/two1/bitcoin/crypto.py", line 18, in <module>
    bitcoin_curve = secp256k1()
  File "/home/reiven/work/venv/wallet/local/lib/python2.7/site-packages/two1/crypto/ecdsa_openssl.py", line 449, in __init__
    super().__init__(hashlib.sha256)
TypeError: super() takes at least 1 argument (0 given)```

Thanks

Example to generate 1000 BTC and ETH addresses

Hi,

thank you for this nice code. But I would like to see example how to generate 1000 BTC addresses and 1000 ETH addresses with private and public key.

Create Child Wallet

You can create child-wallets (BIP32 wallets) from the HD wallet's Extended Public Key to generate new public addresses without revealing your private key.

What is here a private key?
WALLET_PUBKEY = 'YOUR WALLET XPUB'

Where can I get xpub? Is this xprivate_key

Thank you

Address generation

Hi,

The library supports generating P2PKH addresses directly. Are there any plans to support P2WPKH (Bech32) address generation as well?

Support Electrum 2.0

  • pywallet should support xpub keys from Electron to generate addresses that match the ones generated by the Electron wallet

Segwit

Does this support segwit. I am passing the path and xpub that belongs to segwit yet, I am getting addresses that isn't in the path and the address 1

error during installation

error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 34, in
File "/tmp/pip-install-ozwhp5we/protobuf_234c0cbb441b41ac80bace1540906dd8/setup.py", line 29, in
from distutils.command.build_py import build_py_2to3 as _build_py
ImportError: cannot import name 'build_py_2to3' from 'distutils.command.build_py' (/usr/lib/python3.11/site-packages/setuptools/_distutils/command/build_py.py)
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

protobuf error, Can't find required file: ../src/google/protobuf/descriptor.proto

Trying to install inside fresh virtual environment on Ubuntu 20.04 I get the following errors

    ...
    Running setup.py install for mnemonic ... done
    Running setup.py install for protobuf ... error
    ERROR: Command errored out with exit status 255:
     command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-gttmjuwd/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/dev/conversation-bot/conversation-bot-venv/include/site/python3.8/protobuf
         cwd: /tmp/pip-install-a8ffa0w9/protobuf/
    Complete output (5 lines):
    running install
    running build
    running build_py
    Generating google/protobuf/descriptor_pb2.py...
    Can't find required file: ../src/google/protobuf/descriptor.proto
    ----------------------------------------
ERROR: Command errored out with exit status 255: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-gttmjuwd/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/dev/conversation-bot/conversation-bot-venv/include/site/python3.8/protobuf Check the logs for full command output.

full log:

$ python --version
Python 3.8.5
$ pip install pywallet
Collecting pywallet
  Downloading pywallet-0.1.0.tar.gz (32 kB)
Collecting base58>=0.2.2
  Downloading base58-2.1.0-py3-none-any.whl (5.6 kB)
Collecting ecdsa>=0.11
  Downloading ecdsa-0.16.1-py2.py3-none-any.whl (104 kB)
     |████████████████████████████████| 104 kB 1.9 MB/s 
Collecting pycryptodome>=3.6.6
  Downloading pycryptodome-3.10.1-cp35-abi3-manylinux2010_x86_64.whl (1.9 MB)
     |████████████████████████████████| 1.9 MB 2.2 MB/s 
Requirement already satisfied: six>=1.8.0 in /home/user/dev/conversation-bot/conversation-bot-venv/lib/python3.8/site-packages (from pywallet) (1.15.0)
Collecting two1>=3.10.8
  Downloading two1-3.10.9.tar.gz (226 kB)
     |████████████████████████████████| 226 kB 3.1 MB/s 
Collecting arrow
  Using cached arrow-0.17.0-py2.py3-none-any.whl (50 kB)
Collecting click==6.6
  Downloading click-6.6-py2.py3-none-any.whl (71 kB)
     |████████████████████████████████| 71 kB 3.0 MB/s 
Collecting docker-py==1.8.0
  Downloading docker_py-1.8.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 59 kB/s 
Collecting flake8
  Using cached flake8-3.8.4-py2.py3-none-any.whl (72 kB)
Collecting jsonrpcclient==2.0.1
  Downloading jsonrpcclient-2.0.1.tar.gz (6.4 kB)
Collecting jsonrpcserver==3.1.1
  Downloading jsonrpcserver-3.1.1.tar.gz (9.5 kB)
Collecting mnemonic==0.13
  Downloading mnemonic-0.13.tar.gz (21 kB)
Collecting path.py
  Downloading path.py-12.5.0-py3-none-any.whl (2.3 kB)
Collecting pexpect
  Downloading pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
     |████████████████████████████████| 59 kB 2.8 MB/s 
Collecting protobuf==3.0.0a3
  Downloading protobuf-3.0.0a3.tar.gz (88 kB)
     |████████████████████████████████| 88 kB 2.8 MB/s 
Collecting pyaes
  Downloading pyaes-1.6.1.tar.gz (28 kB)
Collecting pytest
  Downloading pytest-6.2.2-py3-none-any.whl (280 kB)
     |████████████████████████████████| 280 kB 3.2 MB/s 
Collecting pyyaml
  Downloading PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl (662 kB)
     |████████████████████████████████| 662 kB 3.2 MB/s 
Collecting requests<=2.11.1
  Downloading requests-2.11.1-py2.py3-none-any.whl (514 kB)
     |████████████████████████████████| 514 kB 3.1 MB/s 
Collecting sha256
  Downloading sha256-0.1.tar.gz (30 kB)
Collecting tabulate
  Downloading tabulate-0.8.7-py3-none-any.whl (24 kB)
Collecting python-dateutil>=2.7.0
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting websocket-client>=0.32.0
  Downloading websocket_client-0.57.0-py2.py3-none-any.whl (200 kB)
     |████████████████████████████████| 200 kB 3.2 MB/s 
Collecting pyflakes<2.3.0,>=2.2.0
  Using cached pyflakes-2.2.0-py2.py3-none-any.whl (66 kB)
Collecting pycodestyle<2.7.0,>=2.6.0a1
  Using cached pycodestyle-2.6.0-py2.py3-none-any.whl (41 kB)
Collecting mccabe<0.7.0,>=0.6.0
  Using cached mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Collecting future
  Downloading future-0.18.2.tar.gz (829 kB)
     |████████████████████████████████| 829 kB 3.0 MB/s 
Collecting jsonschema
  Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
     |████████████████████████████████| 56 kB 841 kB/s 
Collecting funcsigs
  Downloading funcsigs-1.0.2-py2.py3-none-any.whl (17 kB)
Collecting pbkdf2
  Downloading pbkdf2-1.3.tar.gz (6.4 kB)
Collecting path
  Downloading path-15.1.0-py3-none-any.whl (21 kB)
Collecting ptyprocess>=0.5
  Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Requirement already satisfied: setuptools in /home/user/dev/conversation-bot/conversation-bot-venv/lib/python3.8/site-packages (from protobuf==3.0.0a3->two1>=3.10.8->pywallet) (44.0.0)
Collecting attrs>=19.2.0
  Using cached attrs-20.3.0-py2.py3-none-any.whl (49 kB)
Collecting iniconfig
  Using cached iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)
Collecting packaging
  Downloading packaging-20.9-py2.py3-none-any.whl (40 kB)
     |████████████████████████████████| 40 kB 1.0 MB/s 
Collecting py>=1.8.2
  Using cached py-1.10.0-py2.py3-none-any.whl (97 kB)
Collecting toml
  Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting pluggy<1.0.0a1,>=0.12
  Using cached pluggy-0.13.1-py2.py3-none-any.whl (18 kB)
Collecting pyrsistent>=0.14.0
  Downloading pyrsistent-0.17.3.tar.gz (106 kB)
     |████████████████████████████████| 106 kB 3.1 MB/s 
Collecting pyparsing>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Building wheels for collected packages: pywallet, two1, jsonrpcclient, jsonrpcserver, mnemonic, protobuf, pyaes, sha256, future, pbkdf2, pyrsistent
  Building wheel for pywallet (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/pywallet/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/pywallet/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-acjd0z9d
       cwd: /tmp/pip-install-a8ffa0w9/pywallet/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pywallet
  Running setup.py clean for pywallet
  Building wheel for two1 (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/two1/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/two1/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-l91emfll
       cwd: /tmp/pip-install-a8ffa0w9/two1/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for two1
  Running setup.py clean for two1
  Building wheel for jsonrpcclient (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/jsonrpcclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/jsonrpcclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-lr4jtpmj
       cwd: /tmp/pip-install-a8ffa0w9/jsonrpcclient/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for jsonrpcclient
  Running setup.py clean for jsonrpcclient
  Building wheel for jsonrpcserver (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/jsonrpcserver/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/jsonrpcserver/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-wono4adb
       cwd: /tmp/pip-install-a8ffa0w9/jsonrpcserver/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for jsonrpcserver
  Running setup.py clean for jsonrpcserver
  Building wheel for mnemonic (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/mnemonic/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/mnemonic/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-0ftzm5m7
       cwd: /tmp/pip-install-a8ffa0w9/mnemonic/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for mnemonic
  Running setup.py clean for mnemonic
  Building wheel for protobuf (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-bkak2l1f
       cwd: /tmp/pip-install-a8ffa0w9/protobuf/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for protobuf
  Running setup.py clean for protobuf
  Building wheel for pyaes (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/pyaes/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/pyaes/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-yqftoq0m
       cwd: /tmp/pip-install-a8ffa0w9/pyaes/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pyaes
  Running setup.py clean for pyaes
  Building wheel for sha256 (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/sha256/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/sha256/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-t2bxuc93
       cwd: /tmp/pip-install-a8ffa0w9/sha256/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for sha256
  Running setup.py clean for sha256
  Building wheel for future (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/future/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/future/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-lgwm3bfn
       cwd: /tmp/pip-install-a8ffa0w9/future/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for future
  Running setup.py clean for future
  Building wheel for pbkdf2 (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/pbkdf2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/pbkdf2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-vibwbk4r
       cwd: /tmp/pip-install-a8ffa0w9/pbkdf2/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pbkdf2
  Running setup.py clean for pbkdf2
  Building wheel for pyrsistent (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/pyrsistent/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/pyrsistent/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-itm6spj_
       cwd: /tmp/pip-install-a8ffa0w9/pyrsistent/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pyrsistent
  Running setup.py clean for pyrsistent
Failed to build pywallet two1 jsonrpcclient jsonrpcserver mnemonic protobuf pyaes sha256 future pbkdf2 pyrsistent
ERROR: two1 3.10.9 has requirement base58==0.2.2, but you'll have base58 2.1.0 which is incompatible.
Installing collected packages: base58, ecdsa, pycryptodome, python-dateutil, arrow, click, websocket-client, requests, docker-py, pyflakes, pycodestyle, mccabe, flake8, future, pyrsistent, attrs, jsonschema, jsonrpcclient, funcsigs, jsonrpcserver, pbkdf2, mnemonic, path, path.py, ptyprocess, pexpect, protobuf, pyaes, iniconfig, pyparsing, packaging, py, toml, pluggy, pytest, pyyaml, sha256, tabulate, two1, pywallet
  Attempting uninstall: requests
    Found existing installation: requests 2.25.1
    Uninstalling requests-2.25.1:
      Successfully uninstalled requests-2.25.1
    Running setup.py install for future ... done
    Running setup.py install for pyrsistent ... done
    Running setup.py install for jsonrpcclient ... done
    Running setup.py install for jsonrpcserver ... done
    Running setup.py install for pbkdf2 ... done
    Running setup.py install for mnemonic ... done
    Running setup.py install for protobuf ... error
    ERROR: Command errored out with exit status 255:
     command: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-gttmjuwd/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/dev/conversation-bot/conversation-bot-venv/include/site/python3.8/protobuf
         cwd: /tmp/pip-install-a8ffa0w9/protobuf/
    Complete output (5 lines):
    running install
    running build
    running build_py
    Generating google/protobuf/descriptor_pb2.py...
    Can't find required file: ../src/google/protobuf/descriptor.proto
    ----------------------------------------
ERROR: Command errored out with exit status 255: /home/user/dev/conversation-bot/conversation-bot-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"'; __file__='"'"'/tmp/pip-install-a8ffa0w9/protobuf/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-gttmjuwd/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/dev/conversation-bot/conversation-bot-venv/include/site/python3.8/protobuf Check the logs for full command output.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.