在windows系统上以前已经安装了一个python3.5.1版本,可是由于要安装web3.py,因此在python3.5.1环境上安装好web3后,在经过from web3 import Web3的时候,出现错误以下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/web3/__init__.py", line 7, in <module>
from eth_account import Account # noqa: E402
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_account/__init__.py", line 1, in <module>
from eth_account.account import Account # noqa: F401
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_account/account.py", line 10, in <module>
from eth_keyfile import (
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_keyfile/__init__.py", line 7, in <module>
from eth_keyfile.keyfile import ( # noqa: F401
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_keyfile/keyfile.py", line 10, in <module>
from eth_keys import keys
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_keys/__init__.py", line 15, in <module>
from .main import ( # noqa: F401
File "/home/pjs/bp_core_eth/venv/lib/python3.5/site-packages/eth_keys/main.py", line 1, in <module>
from typing import (Any, Union, Type) # noqa: F401
ImportError: cannot import name 'Type'python
该问题的缘由是python3.5.1版本里面的typing.py没有Type这个名称。在3.5.2会有的。因此又下载了一个python3.7.0版本
进入python3.7.0版本安装的目录:D:\soft\python_3_7_0\install,此时若是使用pip install web3则会出现已安装过的提示,由于此时pip指向的是python3.5.1的位置。
那如何使用pip将web3安装到python3.7.0的软件里面呢,解决方法以下:web
官方的解法是什么?
事实上这个问题几年之前Python社区就给出了官方解决方案,只不过国内一直没有注意到罢了。拿个人电脑为例,安装了python3.5.1和python3.7.0,
咱们在安装Python的时候,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器容许咱们指定使用Python版原本运行代码。
若是切换想切换到python3.5.1,可使用以下命令:
py -3.5
或者到python3.5.1的安装目录下(D:\soft\python_3_5),使用命令:
pythonwindows
若是切换想切换到python3.7.0,可使用以下命令:
py -3.7
或者到python3.7.0的安装目录下(D:\soft\python_3_7_0\install),使用命令:
pythonip
若是此时咱们要想在python3.7.0文件夹里面安装web3的话,使用以下命令:
py -3.7 -m pip install web3it
若是你有一个Python文件叫 tab.py,那么你能够这样用Python3.5.1运行它:
py -3.5 tab.pypip
相似的,若是你想用Python3.7运行它,就这样
py -3.7 tab.pyio
使用pip
当Python3.5.1和Python3.7.0同时存在于windows上时,它们对应的pip都叫pip.exe,因此不可以直接使用 pip install 命令来安装软件包。而是要使用启动器py.exe来指定pip的版本。命令以下:
py -3.5 -m pip install XXXX
其中:-3.5 仍是表示使用 Python3.5.1,-m pip 表示运行 pip 模块,也就是运行pip命令了。若是是为Python3.7.0安装软件,那么命令相似的变成:
py -3.7 -m pip install XXXX社区