ValueError: '10 .0.0.0 / 24 'не является сетью IPv4 или IPv6

Я хочу работать с IP-подсетями / IP-адресами в Python. Я создал код Python с помощью модуля ipaddress . Когда я запускаю код в IDE pycharm, он отлично работает. Но когда я запускаю командную строку, набрав python test.py , она показывает следующую ошибку.

 ValueError: '10.0.0.0/24' does not appear to be an IPv4 or IPv6 network 

test.py :

 import ipaddress srcIp = ipaddress.ip_network("10.0.0.0/24") print(srcIp) 

2 Solutions collect form web for “ValueError: '10 .0.0.0 / 24 'не является сетью IPv4 или IPv6”

Кажется, он работает в Python 2.7, если вы используете строку Unicode.

 import ipaddress srcIp = ipaddress.ip_network(u'10.0.0.0/24') print srcIp 

Основная проблема заключается в том, что ip_network() создает экземпляр объекта IPv4Network/IPv6Network который требует, чтобы сетевой адрес являлся строкой unicode. В Python 3 это нормально, но в Python 2 строки по умолчанию не являются unicode. В Python 2:

 >>> import ipaddress >>> ipaddress.IPv4Network('10.0.0.0/24') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "ipaddress.py", line 1486, in __init__ self.network_address = IPv4Address(address) File "ipaddress.py", line 1271, in __init__ self._check_packed_address(address, 4) File "ipaddress.py", line 528, in _check_packed_address expected_len, self._version)) ipaddress.AddressValueError: '10.0.0.0/24' (len 11 != 4) is not permitted as an IPv4 address (did you pass in a bytes instead of a unicode object?) >>> ipaddress.IPv4Network(u'10.0.0.0/24') IPv4Network(u'10.0.0.0/24') 

ipaddress.ip_network() ловит это исключение и вызывает ValueError с менее подробным сообщением:

 >>> ipaddress.ip_network('10.0.0.0/24') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "ipaddress.py", line 148, in ip_network address) ValueError: '10.0.0.0/24' does not appear to be an IPv4 or IPv6 network 

Таким образом, это похоже на проблему с unicode. Одно из возможных объяснений заключается в том, что, возможно, PyCharm использует Python> = 3.3, который предоставляет модуль ipaddress в стандартной библиотеке и в которой строки по умолчанию являются unicode. В вашей командной строке Python может быть версия 2, в которой строки по умолчанию для байтовых строк и ipaddress.ip_network() будут работать, как показано выше. Я не уверен в этом, потому что оператор print srcIp указывает, что вы используете Python 2 в обоих случаях?

Другая возможность заключается в том, что PyCharm каким-то образом влияет на кодирование строковых литералов в Python 2. Я почти ничего не знаю о PyCharm, но есть опции кодирования, которые можно установить. Возможно, они эффективно делают что-то похожее на from __future__ import unicode_literals .

  • Разбирайте IP-адреса из txt
  • Scapy: как получить полный заголовок IP-пакета?
  • Обнаружение общедоступного IP-программ
  • Как проверить, находится ли ip в сети в python
  • Проверка IP-адресов python Проверка REGex для полного и частичного IP-адресов
  • Как отсортировать IP-адреса, хранящиеся в словаре в Python?
  • Как я могу сгенерировать все возможные IP-адреса из списка диапазонов ip в Python?
  • Преобразуйте шестнадцатеричную строку «little endian» в IP-адрес в Python
  • Поиск сетевых (внешних) IP-адресов с использованием Python
  • socket.error: не может назначить запрошенный адрес и пространство имен в python
  • Поиск публичного IP-адреса в Python?
  •  
    Interesting Posts for Van-Lav

    Захват вывода из программы C на stdout с использованием подпроцесса Python? Pexpect?

    Что делает c-выражение подчеркивания c_` точно?

    Преобразование списка словарей в словарь

    Каковы различия в Pythons time.clock () в Mac против Windows?

    Как распиливать и распаковывать экземпляры класса, который наследуется от defaultdict?

    Python распространяется с пустой ошибкой списка?

    Как изменить права пользователя и группы для каталога по имени?

    Как эта функция позволяет удалить повторяющиеся символы из строки в python?

    Python: `from x import *` не импортировать все

    получение pid дочернего процесса

    Python: получение трассировки из многопроцессорной обработки.

    Почему автозаполнение PyCharm не работает для библиотек, которые я устанавливаю?

    Возможно ли иметь несколько операторов в выражении лямбда python?

    Извлечение необработанных данных из модели PowerPivot с использованием Python

    Разница между классом foo и классом foo (object) в Python

    Python - лучший язык программирования в мире.