Không thể cài đặt python web3

Tôi cho rằng bạn đang cố cài đặt web3 bằng cách sử dụng lệnh pip python -m pip install web3 (hoặc viết tắt là pip install web3, mặc dù dạng đầu tiên tốt hơn). Tôi đã gặp lỗi tương tự khi thực hiện lệnh này

Tuy nhiên, vấn đề không nằm ở web3 mà ở một trong những phần phụ thuộc của nó. Bạn có thể kiểm tra điều này bằng cách cài đặt nó với --no-deps, hoạt động tốt

C:\temp\stack_overflow>pip install --no-deps web3
Collecting web3
  Using cached web3-5.24.0-py3-none-any.whl (487 kB)
Installing collected packages: web3
Successfully installed web3-5.24.0

Nhưng điều này có thể không giải quyết được vấn đề của bạn, vì mô-đun có thể không hoạt động nếu không có tất cả các phụ thuộc của nó. Sự phụ thuộc không thành công trong trường hợp này là bitarray. Điều này là do bitarray là một gói nguồn. Tài liệu của thư viện này chứa các hướng dẫn cài đặt

Nếu bạn có trình biên dịch C đang hoạt động, bạn chỉ cần

$ pip install bitarray

Nếu bạn muốn sử dụng các tệp nhị phân được biên dịch trước, bạn có thể

  • conda install bitarray (cả kho lưu trữ Anaconda mặc định cũng như bitarray hỗ trợ conda-forge)
  • tải xuống bánh xe Windows từ

tôi đã làm bước cuối cùng. tải xuống bánh xe từ trang web được đề cập và cài đặt nó với pip install bitarray-2.3.4-cp38-cp38-win_amd64.whl (tất nhiên phiên bản của bạn có thể khác). Điều này làm việc như một sự quyến rũ

Tuy nhiên, web3 cũng phụ thuộc vào lru-dict, dẫn đến cùng một vấn đề. Thật không may, tôi không thể tìm thấy các tệp nhị phân được biên dịch trước cho gói này, vì vậy nếu bạn gặp phải vấn đề tương tự, bây giờ bạn có hai tùy chọn

  1. Sử dụng conda-forge để cài đặt các gói của bạn. Cá nhân tôi không có kinh nghiệm với conda, nhưng conda-forge dường như hỗ trợ gói lru-dict (cũng như gói bitarray đã đề cập ở trên)

  2. Đảm bảo cài đặt Microsoft Visual C ++ 14. 0 hoặc lớn hơn. Như đã đề cập trong thông báo lỗi. Nhận nó với "Công cụ xây dựng Microsoft C ++". https. //Visual Studio. Microsoft. com/visual-cpp-build-tools/

    Trang này chứa một số hướng dẫn chi tiết hơn về cách tải xuống và cài đặt nó

Tôi đã làm cho nó hoạt động bằng cách cập nhật trình biên dịch Visual C++ lên phiên bản mới nhất và đảm bảo bao gồm SDK Windows 10, như được giải thích trong câu trả lời SO này

(venv) C:\temp\stack_overflow>python.exe -m pip install web3
Collecting web3
  Using cached web3-5.24.0-py3-none-any.whl (487 kB)
(...lots of lines listing requirements already satisfied...)
Building wheels for collected packages: lru-dict, bitarray
  Building wheel for lru-dict (setup.py) .. done
  Created wheel for lru-dict: filename=lru_dict-1.1.7-cp39-cp39-win_amd64.whl size=12711 sha256=a6ccbda691f0a941591c1b9c1ae24a5a4ee26d726685f2e71aa382e5b77a3d65
  Stored in directory: c:\users\wovano\appdata\local\pip\cache\wheels\86\3f\f6\6efebdbc72403e91c39f8cc817f61627d065eed97921b8e5b8
  Building wheel for bitarray (setup.py) .. done
  Created wheel for bitarray: filename=bitarray-1.2.2-cp39-cp39-win_amd64.whl size=55817 sha256=a03c3e6ac482b1cbe4adce197f0bd4333c7094af2d785f5575bdff16a024710d
  Stored in directory: c:\users\wovano\appdata\local\pip\cache\wheels\f6\b3\8d\0bb7212600c4671dcb713dec6574c37b118c2c321e6ed52fe3
Successfully built lru-dict bitarray
Installing collected packages: bitarray, attrs, async-timeout, websockets, pywin32, protobuf, lru-dict, jsonschema, ipfshttpclient, eth-account, aiohttp, web3
Successfully installed aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-21.2.0 bitarray-1.2.2 eth-account-0.5.6 ipfshttpclient-0.8.0a2 jsonschema-3.2.0 lru-dict-1.1.7 protobuf-3.18.1 pywin32-302 web3-5.24.0 websockets-9.1

NB. Nên cài đặt web3 trong môi trường ảo sạch, để tránh xung đột phiên bản với các mô-đun đã cài đặt khác