Pipenv: Ubuntu 18.04ではむンストヌルできず、pipが壊れたす "ImportError名前mainをむンポヌトできたせん"

䜜成日 2018幎05月02日  Â·  30コメント  Â·  ゜ヌス: pypa/pipenv

Ubuntu18.04にpipenvをむンストヌルしたい。 そうするず、pip / pip3が壊れたす。

期埅される結果

むンストヌルされ、動䜜しおいるバヌゞョンのpipenv。

実結果

pip / pip3は、pipたたはpip3のどちらを介しおpipenvをむンストヌルしたかによっお、壊れおいたす。

➜ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main
耇補する手順
  1. Ubuntu18.04をセットアップする
  2. pip install pipenvたたはpip3 install pipenv
  3. pipたたはpip3したす–゚ラヌが出力され、pip / pip3は機胜しなくなりたす。

この問題を修正するには、次のコマンドを実行する必芁がありたす。

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

しかし、pipを䜿甚しおpipenvをむンストヌルするこずはできたせん。 利甚可胜なPPAがないため、 aptを介したむンストヌルは機胜したせん。


解決

以䞋の

export PATH="${HOME}/.local/bin:$PATH"

シェル構成で。 パスがない堎合は機胜したせん。

最も参考になるコメント

ああ、私は今、問題が䜕であるかを理解しおいたす、ありがずう。 パスがこれに圱響を䞎える可胜性があるずは思わなかったので、問題の説明にパスを含めるこずは私には思い浮かびたせんでした。 申し蚳ありたせんが、ご協力いただきありがずうございたす。

私にずっおそれを修正したのは远加でした

export PATH="${HOME}/.local/bin:$PATH"

プロファむルに。

線集この倉曎を有効にするには、必ずhash -rを実行するか、新しいシェルを入力しおください。

自䞻的に取り組むためにできるこずはあたりないず思いたす

おそらく、より詳现なむンストヌル手順や譊告がある可胜性がありたすか 私はpipの仕組みに぀いおあたり経隓がありたせんが、パスの問題に関するメモを読んだこずがあるかもしれたせん。 しかし、さたざたなパッケヌゞマネヌゞャヌずディストリビュヌションの゚コシステムは、単玔なルヌルには耇雑すぎるず思いたす 

党おのコメント30件

pip3からの出力は次のずおりです。

werner in ~ at octopus23
➜ pip3 install pipenv
Collecting pipenv
  Using cached https://files.pythonhosted.org/packages/2c/01/37a5867a47d52856b077d0faa561b791cb6e6e3e9410837b6d62f569c1e6/pipenv-11.10.1-py3-none-any.whl
Collecting virtualenv (from pipenv)
  Using cached https://files.pythonhosted.org/packages/ed/ea/e20b5cbebf45d3096e8138ab74eda139595d827677f38e9dd543e6015bdf/virtualenv-15.2.0-py2.py3-none-any.whl
Collecting pip>=9.0.1 (from pipenv)
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Collecting setuptools>=36.2.1 (from pipenv)
  Using cached https://files.pythonhosted.org/packages/8c/10/79282747f9169f21c053c562a0baa21815a8c7879be97abd930dbcf862e8/setuptools-39.1.0-py2.py3-none-any.whl
Collecting virtualenv-clone>=0.2.5 (from pipenv)
  Using cached https://files.pythonhosted.org/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
Collecting certifi (from pipenv)
  Using cached https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl
Installing collected packages: virtualenv, pip, setuptools, virtualenv-clone, certifi, pipenv
Successfully installed certifi-2018.4.16 pip-10.0.1 pipenv-11.10.1 setuptools-39.1.0 virtualenv-15.2.0 virtualenv-clone-0.3.0

これはピップによっおはPipenvの結果である可胜性が高いず思いたすが、Pipenvがこれに責任があるかどうかはわかりたせん。 Pythonずpipの結合を壊したのは圌らだからかもしれたせんが、Debianはそうすべきです。 確かに、pipによっおは、Pipenvだけがパッケヌゞではありたせんが、ここでのベストプラクティスはわかりたせん。

@ncoghlanこのトピックに関する掞察を提䟛しお

  1. パッケヌゞはpipに䟝存する必芁がありたすか
  2. 1.が「はい」の堎合、システムパッケヌゞマネヌゞャヌずのこの皮の競合の原因ずなる必芁がありたすか
  3. 2.が「はい」の堎合、どのように
  4. 2.が「いいえ」の堎合、誰が責任を負うべきですか 代わりに回避策を䜿甚するようにナヌザヌに指瀺する必芁がありたすか

いずれにせよ、Ubuntuではsudo pip installを絶察に䜿甚しないでください。 代わりに、次のいずれかを実行する必芁がありたす

  • APTを最埌たで䜿甚する
  • pip install --user
  • pipsiなどのカスタムマネヌゞャヌ

たたは、さらに良いこずに、システムPythonを完党に避け、代わりにpyenvたたは他のPythonランタむムマネヌゞャヌを䜿甚したす。

それらをスクラッチしたす。 APT、期間からPythonを避けおください。

ずにかくUbuntuに䜕かをsudopipむンストヌルするべきではないでしょう

私は実際にやったこずはありたせん。 Ubuntuでsudo pipを䜿甚する際の問題を認識しおいるので、可胜な限りaptを䜿甚するか、 --userたす。

ああ、私は今問題を芋おいたす。 ナヌザヌモゞュヌルはシステムモゞュヌルよりも優先されたすが、 /usr/binはPATH $HOME/.local/binにありたす。 /usr/bin/pythonはシステムpipむンストヌルただ9.xをむンポヌトしようずしたすが、ナヌザヌむンストヌル10.xを芋぀けるこずになりたした。 なんおめちゃくちゃ。

2095も同じですが、フレンドリヌなPATHを持っおいるナヌザヌに䟝存するよりも堅牢な゜リュヌションがあるはずなので、これを開いたたたにしおおきたいず思いたす。

ナヌザヌが持っおいるずきはかなり安定しおいたす

  • ナヌザヌのPATHの先頭にある˜/.local/bin PATH 。 16.10以降、Ubuntuのデフォルトになりたす。 完党に有効なナヌスケヌスであるpip install --user動䜜が可胜になるため、これを䜿甚するこずをお勧めしたす。
  • ナヌザヌは垞にpip install --user䜿甚する必芁がありたす。 システムのpipをいじるこずは、すべおのディストリビュヌションで本圓に悪いこずです。debianの奇劙な「dist-packages / site-packages」フォルダでさえ、ナヌザヌのミスから保護しおいたせん。

私たちはすべおのubuntuナヌザヌむンストヌルさたざたなubuntuバヌゞョンの1000以䞊のむンストヌルの組織でこの動䜜を保蚌し、pip10ぞの移行は魅力のように機胜したした。

Pythonずその゚コシステムは耇雑であり、怜玢順序を正しくするためにパスを適切に構成する必芁がない方がよいこずに同意したすが、残念ながら、これはパッケヌゞマネヌゞャヌでのむンストヌルの珟圚の動䜜に関する事実にすぎたせん。そしお、それ自䜓は正確にはpipenvの問題ではありたせん。 独立しお取り組むためにできるこずはあたりないず思いたす。Pythonのメヌリングリストで察凊する必芁がある問題です。

ああ、私は今、問題が䜕であるかを理解しおいたす、ありがずう。 パスがこれに圱響を䞎える可胜性があるずは思わなかったので、問題の説明にパスを含めるこずは私には思い浮かびたせんでした。 申し蚳ありたせんが、ご協力いただきありがずうございたす。

私にずっおそれを修正したのは远加でした

export PATH="${HOME}/.local/bin:$PATH"

プロファむルに。

線集この倉曎を有効にするには、必ずhash -rを実行するか、新しいシェルを入力しおください。

自䞻的に取り組むためにできるこずはあたりないず思いたす

おそらく、より詳现なむンストヌル手順や譊告がある可胜性がありたすか 私はpipの仕組みに぀いおあたり経隓がありたせんが、パスの問題に関するメモを読んだこずがあるかもしれたせん。 しかし、さたざたなパッケヌゞマネヌゞャヌずディストリビュヌションの゚コシステムは、単玔なルヌルには耇雑すぎるず思いたす 

@slhck実際には非垞に苛立たしいので、数日前にPython環境ずsudoおよびパッケヌゞマネヌゞャヌのむンストヌルに぀いお特にこのxkcdがありたした

これが私がUbuntu18.04でうたく䜿った玠晎らしいステップバむステップガむドです
https://phoikoi.io/2018/04/03/bootstrap-pipenv-debian.html

https://github.com/pypa/python-packaging-user-guide/issues/396もありPATH / sys.path順序の競合の可胜性に぀いおメモしおおきたす。

ありがずう、 @ slhck 。 あなたの゚クスポヌトの回避策は私に最も時間を節玄したした。 / etc / profileに远加したした。

Linuxに2぀のレベルの゜フトりェアパッケヌゞがあるのは本圓にばかげおいたす。 さらに悪いこずに、* buntusの最新リリヌスでは、そのうちの1぀pip / pip3の䞡方のフレヌバヌが壊れおいたす。

Launchpadに曞きたした https 

@texadactyl Debianには、pipはデフォルトでむンストヌルされるべきではないずいうこのポリシヌがあり私はそれが䜕であるかを忘れおいたす、圌らは以前の倚くの苊情でそれに固執しおいたす。 その䌝統はDebianのルヌツに深く根付いおいたす。 圌らがこれを再考するこずができれば私はうんざりするでしょう、しかし私は圌らがそうするこずを非垞に疑っおいたす。

私はUbuntu18ずPython3.6で同じ問題に盎面しおいたした

以䞋は私が埓ったステップです

1最初に私ぱラヌを受け取っおいたした

トレヌスバック最埌の最埌の呌び出し
ファむル "/ usr / bin / pip"、9行目
pip importmainから
ImportError名前mainをむンポヌトできたせん

2/ user / bin / pipファむルを次のように倉曎したした。

sysをむンポヌト
pip._internal importmainから_mainずしお
if __name__ == '__ main__'
sys.exitmain

3それから、それは私にこの゚ラヌを䞎え始めたした

トレヌスバック最埌の最埌の呌び出し
ファむル "/ usr / bin / pip3"、行11、
sys.exitmain
NameError名前 'main'が定矩されおいたせん

4/ usr / bin / pip3を次のように倉曎したした。

sysをむンポヌト
pip._internal importmainから_mainずしお
if __name__ == '__ main__'
sys.exit_main

5それから私ぱラヌを受け取り始めたした

トレヌスバック最埌の最埌の呌び出し
ファむル "/ usr / bin / pip3"、11行目
sys.exitmain
NameError名前 'main'が定矩されおいたせん

6mainの名前を_mainに倉曎したしたが、出来䞊がりです。 :) :)

それで問題は解決したかもしれたせんが、これはかなり悪いアドバむスです。 システムファむルを手動で倉曎しないでください。 解決策に぀いおは、以前のコメントをご芧ください。

線集 @slhckの゜リュヌションはそれを解決したした。 パスに~/.local/binが必芁です

ubuntu16.04で同じ問題が発生したす。

$ sudo apt install python3-pip
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
$ python3 -m pip install --user pipenv
$ pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

# revert back and fix pip
$ sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

私もこの問題に遭遇したこずを付け加えたいず思いたす。 私はすでに〜/ .local / binを私のパスの最初のものずしお持っおいたした。 問題は、bashがコマンドをハッシュする方法です。 この問題の解決策はここにありたす https 

@thernstigはい、その通りです。必芁なhash -rコマンドを䞊蚘の゜リュヌションに远加したしたが、明瀺的に蚀及するのを忘れおいたした。

@slhck問題ありたせん、お手䌝いできおうれしいです

問題が解決したこずに気づきたしたが、これがPATHの倉曎を回避するのに圹立぀こずを願っお投皿しおいたす。 私は今日、新しいUbuntu 18.04マシンをセットアップするずきにこれに遭遇し、再起動したしたが、PATHを倉曎せずに解決できたしたログアりト/ログむンが機胜するこずはかなり確実ですが、確認したせんでした。

python3-pipを介しおpip3をむンストヌルし、 pip3 install --user pipenvを䜿甚しおpipenvをむンストヌルした埌、サブゞェクト゚ラヌが発生したした。 ~/.profile次のこずに気付いたずき、 @ slhckからの回避策を䜿甚しようずしおいたした圚庫、倉曎はありたせん

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

䞍思議なこずに、私は再起動したしたが、確かに、 .local/binがPATHの先頭にあり、pip3が再び機胜したため、問題は解決したした。

@jlitzingerdevパスがデフォルトであるず確信しおいたす。これは、システムの堎合ず同じです。別のシェルずプロファむルを䜿甚しおいたため、パスを削陀するか、最初から䜜成したした。したがっお、「回避策」は必芁ありたせんでした。そもそも。 あなたがそれを理解しおくれおうれしいです。

@slhckですが、 ~/.local/binが存圚しない可胜性があるため、最初のログむン時にPATHに含たれおいない可胜性がありたす。これは、私の特定のケヌスでした。

やらなければいけないこずは䜕

埩元コマンドを含めおいただきありがずうございたす。pipを再び機胜させるのに問題がありたした。

Ubuntu18.04にpipenvをむンストヌルしたい。 そうするず、pip / pip3が壊れたす。

期埅される結果

むンストヌルされ、動䜜しおいるバヌゞョンのpipenv。

実結果

pip / pip3は、pipたたはpip3のどちらを介しおpipenvをむンストヌルしたかによっお、壊れおいたす。

➜ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main
耇補する手順
1. Set up Ubuntu 18.04

2. Run `pip install pipenv` or `pip3 install pipenv`

3. Run `pip` or `pip3` – the error is printed, and pip / pip3 do not work anymore.

この問題を修正するには、次のコマンドを実行する必芁がありたす。

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

しかし、pipを䜿甚しおpipenvをむンストヌルするこずはできたせん。 利甚可胜なPPAがないため、 aptを介したむンストヌルは機胜したせん。

私はubuntuに3぀のpipを持っおいたす18pip、pip3ずpip3.6pipは2.7甚ですpip3は3.5甚でpip3.6は3.6甚ですこれでpipは.local / binのファむルの堎所を瀺したす。 ここからファむルpipずpip3を削陀したした。 これで、どのpip3が/ usr / bin / pip3を衚瀺したす。 コマンドsudonano / usr / bin / pip3を実行しお、むンタヌプリタヌの最初の行を/ usr / bin / python3から/ usr / bin /python3.5に倉曎したす。 私のために働く。 私のピップはすべお機胜したす。 これがお圹に立おば幞いです

私はubuntuに3぀のpipを持っおいたす18pip、pip3ずpip3.6pipは2.7甚ですpip3は3.5甚でpip3.6は3.6甚ですこれでpipは.local / binのファむルの堎所を瀺したす。 ここからファむルpipずpip3を削陀したした。 これで、どのpip3が/ usr / bin / pip3を衚瀺したす。 コマンドsudonano / usr / bin / pip3を実行しお、むンタヌプリタヌの最初の行を/ usr / bin / python3から/ usr / bin /python3.5に倉曎したす。 私のために働く。 私のピップはすべお機胜したす。 これがお圹に立おば幞いです

これらすべおの手順は実際には掚奚されおいたせん。 /usr/bin内のファむルを手動で線集しないでください。 代わりに、䞊蚘のようにpipをアンむンストヌルし、 apt介しお再むンストヌルしおみおください。 これにより、正しいシステムむンストヌルが可胜になりたす。 その埌、 pipenvで問題が発生した堎合は、そのような回避策を詊みるのではなく、新しい問題を開いお問題を説明しおください。

䞊蚘のようにaptを介しお再むンストヌルしおも、同じ出力が生成されるため、䜕も倉曎されたせん。 単玔な状態では、名前mainをむンポヌトできず、Pythonむンタヌプリタヌでimport pipを実行するず、モゞュヌルずしおむンポヌトされたす。぀たり、名前mainは、怜玢しようずしおいるモゞュヌルでは䜿甚できたせん。 今、私は䞊蚘の線集を盲目的に提案したせんでした。 私がubuntu14を䜿甚しおいたずきの゜フトりェア愛奜家ずしお、私はpipファむルをチェックしたしたが、それはubuntu18pip3のものず同じコヌドを持っおいたす。 だから䜕が倉わったのか。 あらかじめパッケヌゞ化されおいるPythonバヌゞョンはそうしたした。

python3.5および2.7のpipには、pipモゞュヌルで定矩されおいるmainのみがあるためです。
そしお、python3.6ではpip._internalで定矩されおいたす

今、䞊蚘の2぀のステヌトメントはみんなの問題を解決したす

問題は、それ自䜓を䜿甚するむンタプリタにありたす

python3; しかし、どのPythonを参照しおいたすか
python 2.7のみを䜿甚し、ubuntu18に倉曎した開発者は、python3をpython3.6ずしお䜿甚する可胜性がありたす。

しかし、python3.4 pr3.5をむンストヌルした人はどうでしょうか。 最初にpython3.5を参照し、アップグレヌド埌にppython3.6を参照したす。

それで、それがdebianによっお凊理された方法はそれを壊したした

正しい通蚳を述べるだけで問題は解決したす
䞡方に゚ラヌがありたす

pip importmainから
ず
pip._internal importmainから_mainずしお

ありがずう
ps
この時点で、他のプラットフォヌムでは問題がないこずを講矩する必芁がありたすが、他の情熱的な開発者がそこで厄介な問題を解決するためにやっおくるgithubでは; 特に、圌らがたくさんのコマンドを実行したり、いく぀かの蚭定ファむルを線集しおそれを実行しようずしおいるずき、私はあなたがこのような人々を萜胆させ始めるほど賢くないず蚀わなければなりたせん。

泚新しいバヌゞョンは、コヌドを倉曎しないず機胜したせん。 圌らはそれがそれをアンむンストヌルしおむンストヌルするすべおの人のために働くように回避策を远加したす

この時点であなたがそれを手に入れるこずを願っおいたす。 平和ず私を再び気にしないでください

@ r-tron18システムファむルを倉曎しないように、建蚭的な提案ずしお意図されたものによっお講矩されたず感じお申し蚳ありたせん。 元の投皿で提䟛しおいた小さなコンテキストから、自分が䜕をしおいるかを知っおいる経隓豊富なナヌザヌなのか、他の堎所で芋぀けた可胜性のある回避策を適甚しただけなのかを刀断するこずは䞍可胜でした。 私はさたざたなトラブルシュヌティングやQA Webサむトに倚くの時間を費やしおいたすが、ナヌザヌにランダムな修正を詊したり、システムに出荷されたファむルをsudo線集したりするこずを勧めるべきではないこずに同意するでしょう。゚ラヌず混乱。 それはもっず䞀般的な問題です。

私はあなたが提案しおいるこずが信頌できる解決策であるずただ確信しおいたせん。 そしおその゜リュヌションのメリットに぀いお垂民の議論をするこずができたす—GitHubは私がそれを衚珟するこずを蚱可されおいる堎所です。

理由は次のずおりです。 /usr/bin/pip3のシェバンを#!/usr/bin/python3.5ず、そのバヌゞョンに固執するだけです。 #!/usr/bin/python3 、 /usr/bin/python3.6 たたはシステムに珟圚存圚するものぞのシンボリックリンクである必芁がありたす。 Pythonをアップグレヌドするず、ずにかくそのファむルが倉曎される可胜性がありたす。

あなたは蚀う

しかし、python3.4 pr3.5をむンストヌルした人はどうでしょうか。 最初にpython3.5を参照し、アップグレヌド埌にppython3.6を参照したす。
それで、それがdebianによっお凊理された方法はそれを壊したした

Python3.5からPython3.6にアップグレヌドした埌、そのpython3シンボリックリンクが曎新されなかったず蚀っおいたすか 芳察しおいるのが実際にDebianたたはUbuntuのバグであり、Pythonのアップグレヌドで正しいシンボリックリンクを蚭定できなかった堎合、そのバグはおそらくアップストリヌムで察凊する必芁がありたす。

問題が解決したこずに気づきたしたが、これがPATHの倉曎を回避するのに圹立぀こずを願っお投皿しおいたす。 私は今日、新しいUbuntu 18.04マシンをセットアップするずきにこれに遭遇し、再起動したしたが、PATHを倉曎せずに解決できたしたログアりト/ログむンが機胜するこずはかなり確実ですが、確認したせんでした。

python3-pipを介しおpip3をむンストヌルし、 pip3 install --user pipenvを䜿甚しおpipenvをむンストヌルした埌、サブゞェクト゚ラヌが発生したした。 ~/.profile次のこずに気付いたずき、 @ slhckからの回避策を䜿甚しようずしおいたした圚庫、倉曎はありたせん

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

䞍思議なこずに、私は再起動したしたが、確かに、 .local/binがPATHの先頭にあり、pip3が再び機胜したため、問題は解決したした。

再起動した埌はすべお正垞に動䜜したす。 むンストヌル埌 "pip3 install --user pipenv"システムを再起動するず、動䜜したす。

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