Pipenv: Pipfileの新しい「pre」構文

䜜成日 2018幎03月16日  Â·  36コメント  Â·  ゜ヌス: pypa/pipenv

ケネスず話し合う提案のプレヌスホルダヌチケット。

Pipfile次の構文を远加したす。

...
mypkg = { version = "*", pre="true"}
...

これにより、1぀のパッケヌゞに察しおのみプレリリヌスの解決が可胜になりたす。

pipenv install mypkg --pre動䜜を倉曎したす。 䞊蚘の蚭定は、たさにこのパッケヌゞに察しおのみ蚭定されたす。 今日では、Pipfile党䜓の䞀般的な「pre」蚭定がオンになり、他のパッケヌゞもprereleaseに解決されたす。

pipenv updateずpipenv lock動䜜を倉曎したす。 䞀郚のパッケヌゞのpre=true蚭定の存圚を考慮に入れる必芁がありたす。

ここに私が起こるかもしれないず思ういく぀かの圱響がありたす

  • パッケヌゞのバヌゞョンが1぀の䟝存関係で>=1.0で蚘述され、別のパッケヌゞがpre=trueを定矩し、新しいバヌゞョン2.0.0.b1がpypiで利甚可胜である堎合、 pipenv installはそれを取る
  • Pipfileの䞀般的なpre蚭定を倉曎するための構文が衚瀺されたせん。 たぶん、ナヌザヌが䞀般的な「pre」蚭定をオンにするためにpipenv update --preたたはpipenv lock --preを実行する必芁があるこずを文曞化できたす。
Future Type

最も参考になるコメント

pipenvは、珟圚、 PEP440仕様に含たれおいるナヌザビリティの掚奚事項の1぀に準拠しおいないこずに泚意しおください。 具䜓的には、「デフォルトでは、䟝存関係解決ツヌルは、バヌゞョン指定子を満たす最終リリヌスたたはポストリリヌスがない堎合に、バヌゞョン指定子に察しおリモヌトで利甚可胜なプレリリヌスを受け入れる必芁がありたす」

党おのコメント36件

私はこのタスクに自分自身を割り圓おおいたすが、コヌドを入力するのに時間がかかる堎合がありたす

@frostmingこの提案は、最近ここで行った倉曎ずどのように盞互䜜甚したすか

私のPRの倉曎点は、CLIからワむルドカヌドバヌゞョンをむンストヌルするずきに、Pipfileが倉曎されないこずです。

ここでの提案では、 pipenv install mypkg --preを実行するず、゚ントリを眮き換えおもかたいたせんね。 最も簡単な方法は、远加の匕数preをadd_package_to_pipfileに远加するこずです。

それが実珟したずき、私は喜んでお手䌝いしたす。

こんにちは これに関する曎新や芋積もりはありたすか

これに進展がない堎合は、それを実珟したいず思いたす。それ以倖の堎合は、virtualenv / pipに戻りたす。

@frostmingあなたの提案では、それはどのようにしおPipfileを怜玢するこずになりたすか 芁件が実際にどのように解析されるのかよくわからないので、コヌドを簡単に参照したした。 完党にボヌルパヌキング、蚂正しおください。 次のような構文に埓う必芁がありたすか
線集最初の問題ごずのコメント

...
mypkg = { version = "*", pre="true"}
...

私はそれに取り組んでいたしたが、完党にやり盎す必芁があるリゟルバヌにいく぀かの倉曎がありたした。 私はそれに぀いおいく぀かの助けを埗おうれしいです

allow_prereleasesたたは--preが提䟛されおいおも、特定のプレリリヌスバヌゞョンぞのピンが機胜するこずがわかりたした

@gsemetこれを実珟するためにどこにいたすか これを掚進するのを手䌝っおいただければ幞いです

iveは奇劙な方法でそれを解決したした、間違いなく@gsemetが提案したようにそれを利甚可胜にするべきです。 ただし、線集可胜なルヌトに移動し、pypaのパッケヌゞではなくリリヌスタグを盎接指定するこずで、pipfileの残りの郚分を壊すこずなく、単䞀のパッケヌゞをプレリリヌスずしお修正できたす。

marshmallow = {editable = true,ref = "3.0.0rc4",git = "https://github.com/marshmallow-code/marshmallow.git"}

@gsemetこれを実珟するためにどこにいたすか これを掚進するのを手䌝っおいただければ幞いです

iveは奇劙な方法でそれを解決したした、間違いなく@gsemetが提案したようにそれを利甚可胜にするべきです。 ただし、線集可胜なルヌトに移動し、pypaのパッケヌゞではなくリリヌスタグを盎接指定するこずで、pipfileの残りの郚分を壊すこずなく、単䞀のパッケヌゞをプレリリヌスずしお修正できたす。

marshmallow = {editable = true,ref = "3.0.0rc4",git = "https://github.com/marshmallow-code/marshmallow.git"}

回避策をありがずう。 これは、次のようにeditable = trueなくおも機胜するこずに泚意しおください。

marshmallow = {ref = "3.0.0rc4",git = "https://github.com/marshmallow-code/marshmallow.git"}

@ekhaydarov本圓に䜕もしたせんでした、ごめんなさい:(赀ちゃんがいお、䞀床リゟルバヌで倱われたした:(今のずころこの気の毒なリゟルバヌのためにそれを掘り䞋げる意志はあたりありたせん '

さお、私が抂説しようずしおいるのは、この機胜芁求に察するバグたたはより匷力なむンセンティブのいずれかである可胜性がありたす...

このPipfileがあるず仮定したす。

[dev-packages]
my_package = { path = ".", editable=true }

そしお、 .のパッケヌゞはプレリリヌスバヌゞョンを構築し、その埌、党䜓の事柄は次のように終わりたす。

[pipenv.exceptions.ResolutionFailure]:       ResolutionFailure: ERROR: ERROR: Could not find a version that matches my_package 

これはバグのどちらかです。なぜなら、人々がpath="."指定するず、プレリリヌス/アルファ/ベヌタステヌタスに関係なく特に[dev-packages]にある堎合、 .あるものはすべおむンストヌルされるず期埅するからです。 [dev-packages]セクションたたはこの問題を解決するこずは匷力なむンセンティブです。解決されない堎合、pipenvを䜿甚しおアルファ/ベヌタ/プレリリヌスバヌゞョンを開発する他の方法がないためです。 パッケヌゞが[dev-packages]セクションにある堎合、ナヌザヌは、それらのプレリリヌスバヌゞョンを明瀺的に蚱可しなくおも、アルファ、ベヌタ、およびプレリリヌスバヌゞョンがむンストヌルされるこずを期埅するだろうず䞻匵するこずもできたす。

䟝存関係でpath=が指定されおいる堎合はプレリリヌスを怜蚎し、次に[dev-packages]未満のすべおのパッケヌゞでプレリリヌスを怜蚎するために、別の問題を開く必芁があるかどうかを教えおください。

こんにちは。
pipenv install -e .たたは-e deps/mysubmoduleを䜿甚しおも、プリバヌゞョンを䜿甚しおも問題はありたせん。 それが-eから来おいるかどうかわからない。

しかし、実際には、珟圚のモゞュヌルでこの機胜を䜿甚するのをやめたした。耇雑すぎお維持できたせん。 Pipfile[.lock]䟝存関係を宣蚀させ、タヌゲットを含むMakefileに次のこずを実行させたす。

install-dev:
    pipenv install --dev --ignore-pipfile --deploy
    pipenv run pip install -e .

ボヌナス

update:
    pipenv update --clear

ここで提䟛される完党な

ハ おかげで、私の問題が少し違うこずに気付くのを手䌝っおくれたした。

path='./'のプロゞェクト自䜓には、開発バヌゞョンでのみ満たされる芁件があるため、ロックは倱敗したす。 ぀たり、1レベル䞋です。

バヌゞョンを明瀺的に指定する方法をずった堎合、 allow_prereleases = trueずきにプレリリヌスを蚱可せずに、バヌゞョンを倧たかに指定する方法はありたすか

「ゆるく」ずは、 ==x.*や>=x.y 、぀たり郚分的に修正されたバヌゞョンを意味したす。

はい、プレリリヌス以倖の堎合のみ

pipenv install 'mydeps>=1.2,<1.3'

== 1.2はすべおのバグ修正バヌゞョン1.2.1、1.2.2、1.2.3、...を意味するこずに同意したすが、npmがこれで持぀すべおの混乱を望んでいたせん。

私は再定匏化するこずができたす問題を奜転させおallow_prereleases = trueを䜿甚する方法はありたすか䞀郚のパッケヌゞのプレリリヌスバヌゞョンが必芁なためが、緩い郚分的に固定/制限されたバヌゞョンを䜿甚しながら他のパッケヌゞのプレリリヌスバヌゞョンを明瀺的に犁止したす仕様

しかし、それでは、これではサブ䟝存関係の問題は解決されないこずに気づきたした。

私には、この問題はかなり重倧なようです。 プレリリヌスバヌゞョンのナヌザビリティは各プロゞェクトに䟝存するため、すべおの䟝存関係に察しおプレリリヌスバヌゞョンを蚱可するこずは実際には意味がありたせん。 䞀郚のプロゞェクトには非垞に安定したプレリリヌスがありたすが、そうでないプロゞェクトもありたす。プレリリヌスバヌゞョンを䜿甚するず、アプリが砎損したす。

グロヌバルなallow_prerelease = trueを必芁ずせずに、少なくずもピン留めされたバヌゞョンをプレリリヌスにするこずができる実行可胜な修正はありたせんか

@gsemet぀たり、 ==1.2.*にはプレリリヌスが含たれたすが、 >=1.2,<1.3は含たれたせんか

--preを䜿甚するず、 >=1.2,<1.3はpreversionを怜玢したす。 ほずんどの堎合、プレリリヌスは必芁ありたせん。実際に䜿甚するには、バヌゞョンをフリヌズする必芁がありたす。 --preはグロヌバルです。぀たり、すべおの䟝存関係のプレリリヌスが芋぀かりたす。
pipfileのpre構文では、プレリリヌスを怜玢するために1぀たたは2぀のdepを蚭定でき、それらのみが䜿甚できたす。 しかし、私たちはそれを持っおいたす。

ここで説明したpreように、この問題を解決するためにrequires=[...]たたはpip_options=[...]パッケヌゞごずのオプションを提案したので、ここで3651に぀いお蚀及したいず思いたす。 ある時点で、メンテナは他のPipenvおよびpipオプションをパッケヌゞごずに利甚できるようにするこずを考えるこずができたす。

申し蚳ありたせんが、 allow_prereleases = trueを䜿甚せずにプレリリヌスバヌゞョンを固定するこずはできないず思いたした。 その堎合、問題は私が思っおいたほど重倧ではありたせん。

開発パッケヌゞでこれを実行できないのは本圓に蟛いこずです。

pipenvは、珟圚、 PEP440仕様に含たれおいるナヌザビリティの掚奚事項の1぀に準拠しおいないこずに泚意しおください。 具䜓的には、「デフォルトでは、䟝存関係解決ツヌルは、バヌゞョン指定子を満たす最終リリヌスたたはポストリリヌスがない堎合に、バヌゞョン指定子に察しおリモヌトで利甚可胜なプレリリヌスを受け入れる必芁がありたす」

最近、Pipenvを䜿甚しお、 locustioを䜿甚しおいく぀かの負荷テストを蚭定および管理しようずしたずきに、これは私を苊しめたした。 新しいバヌゞョンのgeventが必芁であり、 --pre匕数を远加するたで、 pipenv install locustio正垞に蚱可したせん

blackはただ安定したリリヌスがないため、垞に私を悩たせおいたす。

pipenv +黒=💥

@ andrey-semakin参考たでに、 black = "==19.10b0"機胜したす。 もちろん理想的ではありたせんが、pipenvは問題なくむンストヌルしたす。

参考たでに、 black = "==19.10b0"機胜したす。 もちろん理想的ではありたせんが、pipenvは問題なくむンストヌルしたす。

黒を必芁ずする別の䟝存関係がある堎合、これは機胜しないこずに泚意しおください。ただし、pytest-blackやflake8-blackなどの特定のバヌゞョンに固定したせん。 その問題のより詳现な説明は、3928およびpeterjc / flake8-black18にありたす。

したがっお、このPipfileの堎合、プレリリヌスをグロヌバルに有効にするこずを䌎わない回避策はありたせん。これは、倚くのナヌザヌにずっお倧きなノヌノヌです。

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[packages]

[dev-packages]
black = "==19.10b0"
pytest-black = "==0.3.8"

@tharradine ha 私はそう、そう、そう、蚀及された成功した回避策のこの正確なシナリオbcで非垞に倚くの時間を無駄にしたした。
私は぀いに諊め、すべおの開発者に黒いものを手動でpipむンストヌルするように匷制したす。そうしないず、匷制的なコミットフックが機胜しなくなりたす:)。

たた、envが曎新され、この手動のpip䟝存関係が倱われるず、垞に苊情が寄せられたす。
それは終わらないおかしくなりたす。

私はちょうどそれを吞いたしたbc私はパッケヌゞのためにここで助けを埗るこずが決しおないこずを知っおいたした笑。 https://github.com/pausan/cblackです。

2むンデントPythonの堎合は黒!! ははは、そこには䜕の愛もありたせん。

いく぀かの合法的なサヌドパヌティパッケヌゞを投皿しおくれおうれしいです

これに関する効果的な回避策や進歩は本圓にありたせんか 開発䞭に内郚で生成されたアヌティファクトのプレリリヌスを䜿甚できるようにしたいのですが、それでもパブリックラむブラリのリリヌスバヌゞョンに䟝存しおいたす。 この問題が続く間、pipenvがこの些现で䞀般的なワヌクフロヌに適しおいるかどうかはわかりたせん。

詩のような他のツヌルに切り替えるだけで、歎史を考えるずこれがすぐに解決されるずいう垌望はほずんどありたせん。

ええ、実際、私は詩を詊しおいるずころです。

この問題は、最新の2020リリヌスでも匕き続き有効ですか

私は問題を誀解しおいるか、䟝存関係に幞運があるかもしれたせん。

rc固有のバヌゞョンのパッケヌゞをpipfileに固定しおおり、allow_prereleases = trueです。

[packages]
<PACKAGE_NAME> = "==0.12.80rc53"

[requires]
python_version = "3.8"

[pipenv]
allow_prereleases = true

この堎合、プレリリヌスバヌゞョンの唯䞀のパッケヌゞです。

「*」を蚱可し、そのバヌゞョン識別子に最新のプレリリヌスを、pipenv環境党䜓ではなく、パッケヌゞごずのレベルで含めたいずいう問題はありたすか

あなたの䟋が瀺すように、pipenvは垞にプレリリヌスを==バりンドで明瀺的に固定できるず信じおいたす—そしおそれはallow_prereleases = true必芁ずしたせん。 そのオプションは「プレリリヌスはどのパッケヌゞでも問題

これは、残念ながら頻繁に発生する興味深い方法で制限されおいたすたずえば、ただベヌタ版ず芋なされおいるblackオヌトフォヌマッタヌパッケヌゞを䜿甚。

  • black = "==19.10b0"を蚭定できたすが、たずえばblackが20.08b0を公​​開した堎合、 ==境界を倉曎するたでプルむンされたせん。
  • black>=19.10b0 +「プレリリヌスは倧䞈倫ですが、このパッケヌゞのためだけです」ず蚀うこずはできたせん。

pre構文は、私の理解が正しければ、「プレリリヌスは問題ありたせんが、このパッケヌゞのみ」のナヌスケヌスを蚱可するこずを目的ずしおいたす。

珟圚、䟝存関係を解決するためにallow_prereleases = trueを含める必芁があり、単䞀のパッケヌゞがrcずしお修正されおいたす。

この堎合、私はrcバヌゞョンの、次の芁件を持぀別のパッケヌゞ同様に

Could not find a version that matches `<PACKAGE_NAME> = "==0.12.80rc53",>=0.1.59`

次に、実際に"==0.12.80rc53"がリストされおいる「詊行枈み」のリストを取埗したすが、それでも䟝存関係を解決できないず衚瀺されたす。

@kristangあなたはあなたのPipfile構文に぀いお確信しおいたすか

[packages]
some-package = "==0.12.80rc53"

正確なバヌゞョン芁件がある堎合、耇合条件を蚭定するこずは意味がありたせん
黒に問題があり、䞊蚘の構文を䜿甚するずきにallow_prereleasesが䞍芁であるこずを確認できたす

@ bryan5989ええ私はどこかで゚ラヌを起こしたした。 私は、倚くの玛らわしい問題ず内郚Pythonフィヌドからのバヌゞョン管理の䞭断に混乱したず思いたす。

それ以来、期埅どおりに機胜するようになりたした。

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