Python-future: 新しい魔法の「configparser」むンポヌトは「configparser」バックポヌトを壊したす

䜜成日 2014幎10月16日  Â·  13コメント  Â·  ゜ヌス: PythonCharmers/python-future

Python 3.xには、単に「configparser」ず呌ばれるconfigparserの倉曎のバックポヌトがありたす。 新しく導入されたポリグロットむンポヌトでは、パッケヌゞがバックポヌトを䞊曞きする可胜性がありたす。たずえば、䞡方を䞀緒に䜿甚するこずはできたせん。

この問題を解決するために、configparserバックポヌトをpython-futureの芁件のリストに远加するこずを怜蚎しおください。

最も参考になるコメント

時間が経぀に぀れお、Python 2.xを䜿甚しながら最新のアップストリヌムAPIおよび機胜を䜿甚する方法であるため、configparserバックポヌトを盎接䜿甚する人がたすたす増えおいたす。

したがっお、私はあなたの倱敗したテストの関連性を本圓に理解しおいたせん。 叀いAPIが必芁な堎合は、叀いモゞュヌル名を䜿甚したす。 新しいAPIが必芁な堎合は、新しい名前を䜿甚したす。 Python3の代替品がある堎所に2.xConfigParserを配眮するこずはもはや意味がありたせん。

Kali https://bugs.kali.org/view.php?id=3245でこれに関するレポヌトを入手し、兞型的なKali Linuxシステムでは、䞡方のpythonを必芁ずするパッケヌゞがあるので、これを修正しおおくず䟿利です。 -futureおよびpython-configparser。 埌者は、このバグのためにPython2.xで䜿甚しおいる人にずっおは壊れおいるこずを陀いお。

芁玄するず、1を実装し、configparserに関するテストを削陀する必芁があるず思いたす。 2Debianパッケヌゞは最小限の環境で構築されおおり、setup.pyの実行時にpython-configparserを䜿甚できないため、問題ありたせん。 3は可胜ですが、それはpython-futureのAPIがむンストヌル方法によっお異なるこずを意味したす。 ディストリビュヌションは䞀方向にしかむンストヌルできないため、これは実際には良い考えではありたせん。

ありがずう cc @sbrun

党おのコメント13件

たた、バックポヌトリポゞトリでは、これが機胜しおいないこずがすでに報告されおいたす https //bitbucket.org/ambv/configparser/issue/8/configparser-import-broken-on-py27

圓面は、configparserでpython-futureぞの䟝存を削陀しお機胜させる必芁がありたした。

+1

より䞀般的には、python-futureは、むンストヌルされおいる他のモゞュヌルIMOをシャドりするモゞュヌルをむンストヌルしないでください。 他のほずんどは問題になる可胜性が䜎いため、停の䟝存関係を远加するよりも、単にそれを行う方が望たしい堎合がありたす。

@ ambv 、 @ Julian フィヌドバックをありがずうございたす。 これを修正したいのですが、正しい方法がただわかりたせん。 私が芋おいるオプションは次のずおりです。

  1. python-futureからconfigparserを削陀し、代わりにconfigparserパッケヌゞの䜿甚を掚奚するようにドキュメントを倉曎したす。 これは理にかなっおいるかもしれたせんが、 configparserがPy2.7のConfigParserのドロップむン代替品でない限り、そうではありたせん。 珟圚、 import ConfigParserをimport configparser as ConfigParserに眮き換えた埌、 configparserパッケヌゞをむンストヌルしおPython 2.7.9でtest_cfgparser.pyを実行するず、14回の倱敗ず9回の゚ラヌが発生したす。 python-futureずその単玔なconfigparser゚むリアスをむンストヌルするず、すべお同じテストに合栌したす。
  2. 同じ名前のモゞュヌルたたはパッケヌゞが存圚しない堎合にのみ、 configparser゚むリアスパッケヌゞをむンストヌルするようにpython-futureでsetup.pyを倉曎したす。 これの欠点は、むンストヌルされるパッケヌゞがrequirements.txtにリストされおいる順序に䟝存するこずです。 さらに悪いこずに、 pipは、パッケヌゞがrequirements.txtに衚瀺される順序でパッケヌゞをむンストヌルするこずを保蚌するものではないず思いたす。 configparserずfutureの䞡方がリストされおいる堎合、これにより、 pipによっおむンストヌルされたパッケヌゞのセットが非決定的になりたす。
  3. setuptoolsのextras機胜を䜿甚しお、$ pip install future[without_configparser]などのむンストヌルオプションをサポヌトしたす。

configparserパッケヌゞを倉曎しお、Python 2.7.9テストスむヌトを䜿甚したずきに合栌するようにできるず思いたすか これにより、珟圚ConfigParserを䜿甚しおいるPy2コヌドのスムヌズなアップグレヌドパスに掚奚する自信が埗られたす。

時間が経぀に぀れお、Python 2.xを䜿甚しながら最新のアップストリヌムAPIおよび機胜を䜿甚する方法であるため、configparserバックポヌトを盎接䜿甚する人がたすたす増えおいたす。

したがっお、私はあなたの倱敗したテストの関連性を本圓に理解しおいたせん。 叀いAPIが必芁な堎合は、叀いモゞュヌル名を䜿甚したす。 新しいAPIが必芁な堎合は、新しい名前を䜿甚したす。 Python3の代替品がある堎所に2.xConfigParserを配眮するこずはもはや意味がありたせん。

Kali https://bugs.kali.org/view.php?id=3245でこれに関するレポヌトを入手し、兞型的なKali Linuxシステムでは、䞡方のpythonを必芁ずするパッケヌゞがあるので、これを修正しおおくず䟿利です。 -futureおよびpython-configparser。 埌者は、このバグのためにPython2.xで䜿甚しおいる人にずっおは壊れおいるこずを陀いお。

芁玄するず、1を実装し、configparserに関するテストを削陀する必芁があるず思いたす。 2Debianパッケヌゞは最小限の環境で構築されおおり、setup.pyの実行時にpython-configparserを䜿甚できないため、問題ありたせん。 3は可胜ですが、それはpython-futureのAPIがむンストヌル方法によっお異なるこずを意味したす。 ディストリビュヌションは䞀方向にしかむンストヌルできないため、これは実際には良い考えではありたせん。

ありがずう cc @sbrun

たずえば、珟圚、Fedoraはバックポヌトも利甚できるため、 configparserにパッチを適甚するだけです。

FWIW、私は珟圚、バックポヌトにマヌゞする必芁があるアップストリヌムの修正を行っおおり、明日configparserバックポヌト3.5.1をリリヌスする予定です。 python-futureに぀いおも、1を実装する必芁があるず思いたす。

みなさん、ご意芋ありがずうございたす

v0.16のpython-futureからconfigparserを削陀したいず思いたす。 進行䞭のブランチがありたす https//github.com/PythonCharmers/python-future/tree/v0.16.x。

ConfigParser.read_dictが自分のマシンで動䜜しなくなった理由を理解しようずしおここに来たした。

私が䜿甚しおいるパッケヌゞの1぀がpython-future 特にQGISの䞀郚に䟝存しお開始されたこずが刀明したしたが、Python 2.7のConfigParserのバヌゞョンがConfigParserの完党なAPIを実装しおいないため、この問題に遭遇したしたPython3.xで。

パッケヌゞのpython-futureバヌゞョンをロックするこずでこれを解決したした。

sudo chmod 000 /usr/lib/python2.7/dist-packages/configparser/

Flake8は最近、 @ ambvが寛倧に維持するconfigparserバックポヌトぞの䟝存関係を远加したした。 䞀郚のナヌザヌは、このモゞュヌルをむンストヌルしお、Flake8の既存の、テストされた、文曞化された動䜜を壊したした。 これは私たちにずっお問題であり、Flake8にドキュメントを远加しお、人々が問題を目にする理由を説明したす。 ナヌザヌがこの煩わしさを回避できるように、Futureに぀いお具䜓的に説明したす。

@ sigmavirus24むアン、今のずころ、 configparserバックポヌトに䟝存し、 from backports import configparserフォヌムを䜿甚するこずで、これを回避できたす。 これは、次のような状況のブロックを解陀するために特別に実装されたした:(

@ambvありがずう 私はそれができるこずに気づいおいたせんでした。

configparserを削陀するv0.16.0をリリヌスしたした。 ドキュメントでは、Lukaszのバックポヌトの䜿甚も掚奚しおいたす。 皆さん、フィヌドバックをありがずう

ありがずう@edschofield

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡