Я запускаю Ubuntu 20.04 в Windows 10 с использованием WSL2.
Я пытаюсь подключиться к серверу тестовой сети биткойнов на моем компьютере 127.0.0.1 через Python
Скрипты python отлично работают в Pycharm, командной строке и Powershell, и до недавнего времени отлично работали в Ubuntu, когда я запускал его. на WSL1
. Переключившись на WSL2 для Ubuntu, я получаю следующую ошибку, несмотря на то, что при той же работе в CMD, PS и Pycharm. Кажется, что-то блокирует на стороне Ubuntu. Как это исправить? Отключение быстрого запуска Windows не решило эту проблему.
Traceback (most recent call last):
File "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", line 308, in <module>
run_lab_4()
File "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", line 236, in run_lab_4
block_info = connect_rpc(which_port, rpc_username, rpc_password, block_to_get)
File "/home/lalexk/mpcs56600-work/Lab4/Lab4.py", line 41, in connect_rpc
return rpc_connection.getblock(block_hash)
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/site-packages/bitcoinrpc/authproxy.py", line 132, in __call__
self.__conn.request('POST', self.__url.path, postdata,
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 1257, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 1303, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 1252, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 1012, in _send_output
self.send(msg)
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 952, in send
self.connect()
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/http/client.py", line 923, in connect
self.sock = self._create_connection(
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/socket.py", line 843, in create_connection
raise err
File "/home/linuxbrew/.linuxbrew/Cellar/python@3.9/3.9.6/lib/python3.9/socket.py", line 831, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
Я не совсем знаком с этими сценариями, но похоже, что вы говорите, что сервер Биткойн работает на вашем хосте Windows, и вы пытаетесь подключиться к нему по адресу 127.0.0.1
изнутри WSL2. Это, по крайней мере, объяснило бы, что вы переживаете.
Разница между WSL1 и WSL2 в этом случае заключается в следующем:
WSL1 очень просто поделился сетью Windows. Экземпляр WSL1 имеет тот же IP-адрес, что и его хост Windows, а 127.0.0.1
/ localhost
внутри WSL1 совпадает с локальным хостом Windows
. Он действует как мостовая сеть.
WSL2, с другой стороны, работает в более виртуализированной среде, в основном с использованием элементов гипервизора Windows Hyper-V. Его сеть находится на виртуальном сетевом адаптере, который выполняет NAT за хостом Windows. 127.0.0.1
/ localhost
относится к виртуальному сетевому адаптеру WSL2, не к адаптеру его хоста Windows.
Решение должно быть довольно простым. Используйте либо:
192.168.1.10
) ip rl по умолчанию
в WSL. .local
. Если вам нужно определить это имя изнутри WSL2, вы можете использовать:
echo "$ (powershell.exe '[Console] :: Write ($ env: COMPUTERNAME)').local "
Если я неправильно понимаю вашу настройку и она не работает, дайте мне знать, и мы сможем уточнить конфигурацию.