2017-04-06 14 views
2

pyenv를 설치하고 실행하려고하므로 (Mac OS X) tox/detox를 사용하여 여러 개의 Python 환경을 비교하여 코드를 테스트 할 수 있습니다. 여러 개의 Python3 버전을 설치 한 다음 모든 버전에서 pyenv global을 사용했습니다. 이 목록, 그 pyenv versions 수익을 수행 한 후 그러나pyenv는 여러 개의 비단뱀을 설치하지만 일부만 인식합니다.

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-pyenv를 설치하면 tox가 이러한 환경을 모두 찾아 사용할 수 있습니다!

+0

'합니다 (이 ** 끝 **이야없이) pyenv version' 무엇을 반환하지 않고 내 도서관과 독극물 실행을 위해이 방법을 사용합니까? –

+0

올리버 : 글로벌/로컬 명령에 나열된 순서대로 시스템 플러스 3.xx 버전 목록을'(byUsers/Workspace/Desktop/pydnmr-tox/templates- version) '로 설정합니다. –

+0

I 또한 이런 불일치를 발견했지만 아직 핀치를 할 기회가 없었기 때문에 toxen-pyenv가 좋은 대안입니다. –

답변

2

pyenv 인터프리터 검색은 tox 코어 (yet)과 통합되지 않습니다. 따라서 작동하는 모든 것은 독성이 이미 적용되는 인식되지 않는 발견 방법으로 일부를 발견하기 때문입니다.

지속적으로이 일을하는 방법은 두 가지가 있습니다

  1. 것은 당신이 독극물 전화 맥락에서 모든 통역에 대한 pyenv에게이. 예 : 당신이 독극물을 투하하려는 프로젝트에서 pyenv local system 3.2.6 3.3.6 3.4.6 3.5.3 3.6.1 그러면 독소가 모든 것을 찾아야합니다. 언제든지 기본값이되도록하려면 pyenv global을 정확하게 설정하십시오. 목록의 첫 번째는 파이썬을 호출 할 때 호출되는 인터프리터이지만, 다른 모든 것들도 활성화되어야하며 따라서 독점을 발견 할 수 있어야합니다.

  2. 이가 어떤 이유로 당신을 위해 그것을하지 않거나 당신이 좀 더 자동으로 원하는 경우 : - tox-pyenv

+2

pyenv 전역 또는 pyenv 로컬은 작동하지 않지만 tox-pyenv를 설치하면 작동하지 않습니다. 그 tox-pyenv가 경로 발견을 위해'pyenv '를 사용하도록 tox에 지시했다는 것을 읽었습니다. 나는 이것을 시도하고 이상한 행동을 발견했다. 내 질문이 끝나면 추가하겠습니다. –

0

설정할 수있는 발견을 담당 플러그인이 pyenv global을 사용하여 필요한 모든 버전 예를 들어 :

pyenv global 3.6.0 3.5.3 3.4.6 2.7.10 

나는 어떤 문제 :

+0

그게 내가 실제로 "모든 버전에서 사용되는 pyenv 전역"의 의미입니다. 그래도 고마워. –

+0

내 예제와 같은 방식으로 모든 버전을 동시에 실행할 수 있습니까? 'pyenv global'을 실행하면 출력은 무엇입니까?(당신은 모든 버전을보아야한다. 그렇지 않다면 첫 번째 질문에 대한 대답이 없다는 뜻이다.) – daveoncode

+0

그래, 그랬어. 'pyenv global'의 출력은 모든 버전 목록입니다. 나는 다른 의견들에 더 많은 정교함과 원래의 질문에 대한 부록을 더하고있다. 수수께끼는 pyenv가 버전을 성공적으로 설치 한 것으로 보이지만, 3.2에서 3.6 사이의'python3.x'를 사용하면 파이썬을 찾지 못하거나 오래된 최상위 레벨 설치를 찾지 못할 것입니다. 하지만 : tox-pyenv를 설치하면 마술처럼 문제가 해결됩니다! –