2

ここで何か間違ったことをしなければなりません...現在、組み込みモジュールを使用して、IPが特定のサブネット内にあるかどうかを検証しようとしています。

私はactivepythonを使用しています:

ActivePython 3.1.2.3 (ActiveState Software Inc.) ベース
Python 3.1.2 (r312:79147、2010 年 3 月 22 日、12:20:29) [MSC v.1500 32 ビット (Intel)] (win32)

変更ログにこれがあります:

パイソンニュース
(編集者: ReST を使用した NEWS の編集に関する情報については、NEWS.help を確認してください。)

Python 3.1.2 の新機能
リリース日: 2010-03-20

-  - - をちょきちょきと切る  -  - -

ipaddr モジュールを削除しました。
問題 #3613: base64.{encode,decode}string が呼び出されるようになりました
システム メッセージ: WARNING/2 (、706 行目)

-  - - をちょきちょきと切る  -  - -

問題 #3959: ipaddr モジュールが標準ライブラリに追加されました。Google による寄稿。

それと他のGoogle検索により、ipaddrが組み込みであると信じるようになりましたが、それでも:

>>> ipaddrをインポート
トレースバック (最新の呼び出しが最後):
  ファイル ""、1 行目、
ImportError: ipaddr という名前のモジュールがありません
>>> ipaddrインポートから *
トレースバック (最新の呼び出しが最後):
  ファイル ""、1 行目、
ImportError: ipaddr という名前のモジュールがありません

だから私はnetaddrをインストールしてそれを使用しようと考えました。netaddrから得られるのは次のとおりです。

>>> netaddr をインポート
トレースバック (最新の呼び出しが最後):
  ファイル ""、1 行目、
  ファイル「C:\Python31\lib\site-packages\netaddr\__init__.py」の 18 行目
    from netaddr.ip import IPAddress, IPNetwork, IPRange, all_matching_cidrs, \
  ファイル「C:\Python31\lib\site-packages\netaddr\ip\__init__.py」の 1877 行目
    IPV6_LOOPBACK = IPアドレス('::1')
  ファイル「C:\Python31\lib\site-packages\netaddr\ip\__init__.py」、262 行目、__init__ 内
    self.value = アドレス
  ファイル "C:\Python31\lib\site-packages\netaddr\ip\__init__.py"、292 行目、_set_value
    % 価値)
netaddr.core.AddrFormatError: IP バージョンの検出に失敗しました: '::1'

私はかなり不満を感じており、ここからどこへ行くべきかわかりません...提案はありますか?

4

3 に答える 3

3

netaddrはPython3.xをまだサポートしていません(READMEに記載されています)。

ただし、次のリリース(0.7.5)で実行されます。これをヒントとして、急いでドアから出してください。

ここにプロジェクトバグトラッカーにチケットを追加しました:-

http://code.google.com/p/netaddr/issues/detail?id=55

ありがとう。

于 2010-04-27T21:36:24.563 に答える
3

モジュールは 3.1 開発サイクル (アルファ 2 とベータ 1 の間) に追加されましたipaddrが、3.1 の最初のリリース候補の前に削除されました。これは、リリースされた Python バージョンの標準ライブラリの一部ではありません。PyPIなどからダウンロードしてインストールすることもできます。

netaddr失敗自体がバグのようですnetaddr。IPv6 サポートを検出しようとして失敗します。モジュールのバグだと思いますが、修正または回避策を推測するのは困難です。

于 2010-04-26T16:25:04.443 に答える
2

モジュールipaddressは、モジュールの新しいバージョンである python 3.3 に含まれていipaddrます。

ipaddressipaddrPyPI で利用可能なモジュールと後方互換性がありません。

主な違いは次のとおりです。

  • ipaddress *Network クラスは、厳格なフラグが True に設定された ipaddr *Network クラスの対応物と同等です。
  • ipaddress *Interface クラスは、厳密なフラグが False に設定された ipaddr *Network クラスの対応物と同等です。
  • ipaddress のファクトリ関数は、クラスとのあいまいさを解消するために名前が変更されました。
  • いくつかの属性の名前も、その目的を明確にするために変更されました。(例: network、network_address)
    • ipaddr でコンテナーを返していた多くのメソッドと関数が、反復子を返すようになりました。これには、サブネット、address_exclude、summary_address_range、collapse_address_list が含まれます。

詳細については、PEP-3144を参照してください。

于 2014-08-05T14:33:57.800 に答える