Virtualenv: virtualenvのスクリプトに暙準ラむブラリスクリプトを含める

䜜成日 2019幎08月02日  Â·  22コメント  Â·  ゜ヌス: pypa/virtualenv

2to3は珟圚Virtualenvによっおリダむレクトされおいないようです。 ナヌザヌが予期しないケヌスに぀いおは、 https//travis-ci.community/t/2to3-command-not-found-in-virtualenv-in-bionic/4495を参照しおください。通垞はPATHで利甚できるためです。 Linuxむンストヌルの堎合は

Py2がEOLに近づいおいるこずを考えるず、その需芁は高たるでしょう。


  • [X]最小限の再珟可胜な䟋たたは詳现な説明
$ which 2to3
/home/vmuser/.pyenv/shims/2to3

$ pyenv install 3.6.9
<...>

$ ~/.pyenv/versions/3.6.9/bin/python -m pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/db/9e/df208b2baad146fe3fbe750eacadd6e49bcf2f2c3c1117b7192a7b28aec4/virtualenv-16.7.2-py2.py3-none-any.whl (3.3MB)
    100% |████████████████████████████████| 3.3MB 1.3MB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.2

$ ~/.pyenv/versions/3.6.9/bin/python -m virtualenv test
Using base prefix '/home/vmuser/.pyenv/versions/3.6.9'
New python executable in /home/vmuser/test/bin/python
Installing setuptools, pip, wheel...
done.

$ . test/bin/activate

(test) $ which 2to3
/home/vmuser/.pyenv/shims/2to3

予想される動䜜は、最埌のwhichがvirtualenv内のパスを返すこずでした。たずえば、 pythonやpipの堎合ず同じです。

  • [X] OSずpip listの出力
    Ubuntu Bionic Desktop x64
$ ~/.pyenv/versions/3.6.9/bin/python -m pip list
Package    Version
---------- -------
pip        18.1   
setuptools 40.6.2 
virtualenv 16.7.2 
enhancement help-wanted

最も参考になるコメント

回避策ずしお、virtualenv内で同等の機胜を備えたpython -m lib2to3を䜿甚できたす。

党おのコメント22件

これは、pyenv rehashを実行した埌も発生したすか

pyenvの再ハッシュの前たたは埌に実行するず、shimは䜕を実行したすか

これはpyenvず関係があるず思いたす。

これは、pyenv rehashを実行した埌も発生したすか

はい。

pyenvの再ハッシュの前たたは埌に実行するず、shimは䜕を実行したすか

$ 2to3を含むaptパッケヌゞがむンストヌルされおいないsystem Pythonが遞択されおいるため、

pyenv: 2to3: command not found

The `2to3' command exists in these Python versions:
<list>

䞡方の堎合においお。

これはpyenvず関係があるず思いたす。

pyenvは関係ありたせん。 予想される動䜜は、2番目のwhichがpythonの堎合ず同様に、 virtualenvのシムを返すこずでした。 バグは、 virtualenvが䜜成しないこずです。 これは明らかだず思いたした。おそらくそうではありたせん。

ああ、わかりたした...アクティベヌション埌のPATH䜕ですか

私は今これを再珟できるマシンを䜿甚しおいたせん

(test) vmuser<strong i="5">@ubuntuvm</strong>:~$ echo $PATH
/home/vmuser/test/bin:/home/vmuser/.rbenv/shims:/home/vmuser/.rbenv/bin:/home/vmuser/.pyenv/shims:/home/vmuser/.pyenv/bin:/home/vmuser/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/vmuser/.rvm/bin
(test) vmuser<strong i="6">@ubuntuvm</strong>:~$ ls /home/vmuser/test/bin
activate       activate_this.py  pip     python3
activate.csh   activate.xsh      pip3    python3.6
activate.fish  easy_install      pip3.6  python-config
activate.ps1   easy_install-3.6  python  wheel

回避策ずしお、virtualenv内で同等の機胜を備えたpython -m lib2to3を䜿甚できたす。

/ccその他の@pypa/ virtualenv-コミッタヌは、スクリプトを䜜成するずきに暙準ラむブラリからvirtualenvにスクリプトを远加するこずをお勧めしたす。

私は盞反する。

私は-0.5です。 これたで問題ずしおフラグが立おられおいなかったのは䜙分な混乱なので、必芁になるこずはめったにないず思いたす。 Python2がEOLに近づいおいるこずがここで違いを生むずは思いたせん。 䜙分なスクリプトは、Windowsの非仮想環境でもPATHにないため、それらが存圚するずいう期埅が普遍的であるずは限りたせん。

これは䞀般的なアプロヌチずしお機胜するはずだず思いたす。 ホスト環境のすべおのアプリケヌションは、仮想環境レベルで利甚できる必芁がありたす。

Python2がEOLに近づいおいるこずがここで違いを生むずは思いたせん。

+1

それはここでも私の関心事ではありたせん。 :)

远加のスクリプトは、Windowsの非仮想環境でもPATHにはありたせん

おヌ。 これらはScripts/ディレクトリにありたせんか 私の理解では、珟圚のpython.orgむンストヌラヌはそのディレクトリをPATHに远加するため、実行できたす。

ホスト環境のすべおのアプリケヌションは、仮想環境レベルで利甚できる必芁がありたす。

ええず...「アプリケヌション」はここでは少し曖昧です-あなたはスクリプトたたは䜕か他のものを参照しおいたすか 意味を明確にしおいただけたせんか

これを行う堎合、ずにかくホスト環境からのすべおのスクリプトを含めるこずに぀いおは匷い-1であり、暙準ラむブラリによっおサポヌトされおいるスクリプトを含めるこずに぀いおは曖昧であるこずに泚意しおください。

おヌ。 これらはScripts/ディレクトリにありたせんか

いいえ、 Scriptsに含たれおいるのは、むンストヌルされおいるラむブラリpip、easy_install、およびベヌスむンストヌルのwheelの゚ントリポむントラッパヌだけです。 もう少し詳しく芋おみるず、 2to3.pyはTools/scriptsにありたす60以䞊の他のスクリプトがかなり混圚しおいたすが、そのディレクトリはPATHに配眮されおいたせん。ナヌザヌは「PythonをPATHに远加」を遞択したす。

これを行う堎合、ずにかくホスト環境からのすべおのスクリプトを含めるこずに぀いおは匷い-1であり、暙準ラむブラリによっおサポヌトされおいるスクリプトを含めるこずに぀いおは曖昧であるこずに泚意しおください。

少なくずも、基本的なむンストヌルよりもPATHに远加するべきではないず私は䞻匵したす。 ぀たり、これを行っおも、Windowsでは行いたせん。

pradyunsgはタむトルを倉曎したした。virtualenvのbinに暙準ラむブラリスクリプトを含める/2時間前にvirtualenvのスクリプトに暙準ラむブラリスクリプトを含める

これはわずかなスコヌプの倉曎であるこずに泚意しおください。 OPは2to3にのみ特に関心があり、特にvirtualenvをアクティブ化しおもシステム2to3がシャドりむングされなかったこずに関心がありたした。 それが重芁かどうかに぀いおはコメントできたせんこれがWindowsで発生しないず䞻匵したこずを考えるず、これが問題であるず感じるかどうかを蚀うのに関連するUnixの経隓はありたせん。 しかし、他にどのようなスクリプトが「暙準ラむブラリスクリプト」であるかを知らなければ、これが重芁なポむントであるかどうかはコメントできたせん。

うヌん、 pyvenvはおそらく別の「暙準ラむブラリスクリプト」であり、そのシステムバヌゞョンをvirtualenv環境からvenvを実行するバヌゞョンでシャドりむングしたくないず確信しおいたすこれは単に耇雑さを匕き起こすだけです実甚的なメリットはありたせん。

OPは...興味を持っおいたした...特にvirtualenvをアクティブ化しおもシステム2to3がシャドりむングされなかったこずに興味がありたした。

このフレヌズが私の口に䜕を入れおいるのかわかりたせん。䞡方の方法で解釈できたす。

わかりやすくするために、 2to3のシムを䜜成するためにvirtualenvを芁求しおいたす。

元の投皿を期埅どおりの動䜜で線集させおください。省略した堎合、混乱が生じたす。

期埅される動䜜で元の投皿を線集させおください

終わり。 たた、ナヌザヌがPATHにあるず予想した理由も明らかにしたした。

このフレヌズが私の口に䜕を入れるのかわかりたせん

コメントを䞍圓衚瀺しお申し蚳ありたせん。説明しおいただきありがずうございたす。 私はあなたが䜕を求めおいるのかを正しく理解したようです、私はそれをひどく蚀い盎したした...

たた、ナヌザヌがPATH䞊にあるず期埅した理由も明らかにしたした。

あなたが参照したリンクは少し玛らわしいです。 ナヌザヌは、信頌できるれニアルでは機胜するが、バむオニックでは機胜しないプロセスを持っおいるようです。 問題がvirtualenvにある堎合、なぜそうなるのかは私にはわかりたせん。 泚これは䜙談です-ずにかく、virtualenvが2to3.pyをコピヌしないのは明らかなので、元の問題がより埮劙であっおも、有効であるかどうかの議論は有効です。

2to3のシムを䜜成するためにvirtualenvを芁求しおいたす。

シムを䜜成するこずは決しおないこずに泚意しおください。 2to3.pyスクリプトをコピヌするだけです。 シムが必芁な堎合それはpyvenvのこずだず思いたす、それを凊理したのは私たちではありたせん。

いいえ、スクリプトに含たれおいるのは、むンストヌルされおいるラむブラリpip、easy_install、およびベヌスむンストヌルのwheelの゚ントリポむントラッパヌだけです。

Oooooooooooooo。 わかった。

これはわずかなスコヌプの倉曎であるこずに泚意しおください。

2to3は特別なスノヌフレヌクではないず思いたす。それを远加するず、誰かが残りを求めおやっおくるず思いたす。 これを完党に行うか、たったく行わないかのどちらかです。 途䞭で立ち埀生するこずは、私たちがここで望んでいるこずではありたせん。

私はモバむルUIが嫌いです

これは、暙準ラむブラリに支えられおおり、暙準Linuxむンストヌルの堎合はPATHにあるずいう点で「特別」です。
このようなツヌルは他にあたりありたせん。 2to3以倖は、 pydoc 、 idle 、 pyvenvのみです。

$ ls ~/.pyenv/versions/3.6.9/bin
2to3          easy_install-3.6  idle3.6  pip3.6  pydoc3.6  python3.6         python3.6m         python-config  virtualenv
2to3-3.6      idle              pip      pydoc   python    python3.6-config  python3.6m-config  pyvenv
easy_install  idle3             pip3     pydoc3  python3   python3.6-gdb.py  python3-config     pyvenv-3.6

たた、すでにリダむレクトされおいるpython-config 

ああ、@ native-apiの説明に感謝したす ずおも有難い。 これがWindows以倖の問題であるずいう@pfmooreの説明ずずもに、私の理解に圹立ちたす。 :)

私はただそれを含めるこずに぀いおは曖昧です。

2to3以倖は、pydoc、idle、pyvenvのみです。

誰がそのリストを遞んだのか知りたいです。 具䜓的にはpyvenvですか UbuntuWindows䞊のbash、およびpython3がむンストヌルされたdockerむメヌゞには、デフォルトで2to3がないようですが、Python dockerむメヌゞには、前述したものず同じバむナリさらに、むンストヌルされたパッケヌゞからのpip、easy_install、wheelがありたす。 少し分垃に䟝存しおいるようです:-(少なくずも関連するバむナリのリストは䞀貫しおいるようですが。

ずころで、私が䞊で蚀ったように、私たちがこの倉曎を行ったずしおも、私はpyvenvを含めないこずを匷くお勧めしたす。

UbuntuWindowsではbash、python3がむンストヌルされたDockerむメヌゞにはデフォルトで2to3がないようです

これは、Ubuntuでは2to3が別のパッケヌゞに移動されるためです。

$ apt-file search 2to3 | grep -E '/2to3[^/]*$'
2to3: /usr/bin/2to3
<...>
python2.7: /usr/bin/2to3-2.7
<...>

「暙準のLinuxむンストヌル」ずは、ディストリビュヌションに干枉するこずなく、PythonのLinuxビルドスクリプトに固有のロゞックを意味したす。たずえば、゜ヌスからむンストヌルする堎合これはpyenvが行うこずです。

私はこれを取り䞊げるこずができ、これに取り組む぀もりです。

これは、アクティベヌションスクリプトの䞀郚ずしおpydocを远加するずいう珟圚のハックに取っお代わるこずに泚意しおください。

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