在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社區