2017-04-06 10 views
2

pyenvを起動して実行しようとしています(Mac OS X)ので、複数のPython環境をテストするためにtox/detoxを使用できます。私は複数のpython3のバージョンをインストールすることができましたし、すべてのバージョンでpyenv globalを使用しました。このリストは、そのpyenv versionsリターンを行った後:しかしpyenvは複数のpythonsをインストールしますが、いくつかしか認識しません

system 
* 3.2.6 (set by /Users/Workspace/.pyenv/version) 
    3.3.6 
    3.4.6 
    3.5.3 
    3.6.1 

、わずか3.4および3.5は、(私が 'システム' であると信じている、2.7.8と一緒に)認識されます。

Geoffreys-MBP:pydnmr-tox Workspace$ python --version 
Python 2.7.8 
Geoffreys-MBP:pydnmr-tox Workspace$ python3.2 --version 
-bash: python3.2: command not found 
Geoffreys-MBP:pydnmr-tox Workspace$ python3.3 --version 
-bash: python3.3: command not found 
Geoffreys-MBP:pydnmr-tox Workspace$ python3.4 --version 
Python 3.4.3 
Geoffreys-MBP:pydnmr-tox Workspace$ python3.5 --version 
Python 3.5.2 
Geoffreys-MBP:pydnmr-tox Workspace$ python3.6 --version 
-bash: python3.6: command not found 

任意のアイデアはどのようなこの現象が発生していますか? tox/detoxも同様に3.4/3.5以外のPythonのバージョンは見つかりません。

編集:pyenvがすべての環境をインストールしているようですが、python3.xコマンドはそれらを見つけることができませんでした。 python3.4python3.5が以前のトップレベルインストールを検出したために機能していました。 pyenv which python3.x.ypython3.x [--version]の結果は以下のとおりです。しかし

$ pyenv which python3.2 
/Users/Workspace/.pyenv/versions/3.2.6/bin/python3.2 
$ python3.2 --version 
-bash: python3.2: command not found 
$ python3.2 
-bash: python3.2: command not found 
pyenv which python3.3 
/Users/Workspace/.pyenv/versions/3.3.6/bin/python3.3 
$ python3.3 --version 
-bash: python3.3: command not found 
$ pyenv which python3.4 
/usr/local/bin/python3.4 # old install 
$ python3.4 --version 
Python 3.4.3    # not 3.4.6 installed by pyenv 
$ pyenv which python3.4.6 
pyenv: python3.4.6: command not found 
$ python3.4.6 --version 
-bash: python3.4.6: command not found 
$ pyenv which python3.5 
/Users/Workspace/.pyenv/versions/3.5.3/bin/python3.5 
$ python3.5 --version 
Python 3.5.2 #Linked to my old 3.5.2 install instead of pyenv 3.5.3 install 
$ pyenv which python3.6 
/Users/Workspace/.pyenv/versions/3.6.1/bin/python3.6 
$ python3.6 --version 
-bash: python3.6: command not found 

、これらの環境のすべてを見つけて使用することはできTOX以下の回答で提案されているようにTOX-pyenvをインストール!

+0

'pyenv VERSION'(** S **終わりのない)とは何を返すのですか? –

+0

Oliver: '/Users/Workspace/Desktop/pydnmr-tox/.python-versionによって設定された'と一緒にglobal/localコマンドにリストされている順番で、システム+ 3.xxバージョンのリストを返します。 –

+0

Iこのような矛盾にも気づきましたが、まだピン止めの機会がなかったので、毒素pyenvが良い選択肢です。 –

答えて

2

pyenvインタプリタの発見はtoxコア(yet)と統合されていません。だから、働いているのは、毒がすでに適用されている未知の発見方法でいくつかを見つけ出すからです。

そこは一貫してこの作業を行うには二つの方法があります:

  1. あなたはTOXを呼び出すコンテキスト内のすべてのあなたの通訳についてpyenvを教えてください。例えばあなたが毒を実行したいプロジェクトでpyenv local system 3.2.6 3.3.6 3.4.6 3.5.3 3.6.1毒はそれらのすべてを見つけるはずです。あなたがどこにいてもこれをデフォルトにしたい場合は、ちょうどそのようにpyenv globalを設定してください。リストの最初のものは、Pythonを呼び出すときに呼び出されるインタープリタですが、他のすべての関数もアクティブであるため、毒性を検出する必要があります。

  2. これは、何らかの理由であなたのためにそれをしないか、あなたはそれがもう少し自動になりたい場合は、次のプラグインがある - tox-pyenvあなたが設定することができるという発見

+2

pyenv globalまたはpyenv localはどちらも動作しませんでしたが、tox-pyenvをインストールしました。私はtox-pyenvがpath discoveryのために 'pyenv'を使うように毒を教えていることを読んでいます。私はこれをやろうとし、奇妙な行動を発見した。私は質問の最後にそれを追加します。 –

0

の世話をしますpyenv globalを使用して必要なすべてのバージョン。たとえば:

pyenv global 3.6.0 3.5.3 3.4.6 2.7.10 

私は私のライブラリとTOXのため、このアプローチは、いかなる問題なく動作します使用:)

+0

これは私が実際に「すべてのバージョンでpyenv globalを使用した」という意味です。しかし、ありがとう。 –

+0

私の例と同じ方法で(すべてのバージョンを同時に)コマンドを起動しましたか? 'pyenv global'を実行すると出力は何ですか?(すべてのバージョンが表示されるはずです。そうでない場合は、1つしか表示されない場合は、最初の質問に対する答えが返されません) – daveoncode

+0

はい、ありました。 'pyenv global'の出力はすべてのバージョンのリストです。私は、他のコメントや、私の元の質問への補足で、より精巧になっています。謎は、pyenvがバージョンをうまくインストールしたようだが、3.2から3.6までの 'python3.x'を使うと、Pythonを見つけられず、古いトップレベルのインストールが見つからないということです。しかし、tox-pyenvをインストールすると魔法のように問題が解決します! –

関連する問題