Python, похоже, работает под управлением 3.6, хотя моя виртуальная среда настроена на запуск 3.7

#python #python-3.x #virtualenv #pyenv

#python #python-3.x #virtualenv #pyenv

Вопрос:

Я переключился на Python 3.7.2 использование pyenv . Это подтверждается ниже:

 $ python -V
Python 3.7.2
  

Затем я создал виртуальную среду под названием venv и установил все свои зависимости. Я вижу, что они установлены при запуске pip list .

Когда я теперь запускаю свои тесты с помощью nosetest, я использую эту команду:

 nosetests -s -v tests.functional.test_app
  

Тест завершается с ошибкой, указывающей, что у меня отсутствует зависимость. Я вижу, что зависимость установлена, когда я проверяю pip list . Однако я замечаю, что трассировка журнала ссылается Python3.6 :

 $ nosetests -s -v tests.functional.test_app
Failure: ModuleNotFoundError (No module named 'botocore') ... ERROR

======================================================================
ERROR: Failure: ModuleNotFoundError (No module named 'botocore')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nose/failure.py", line 39, in runTest
raise self.exc_val.with_traceback(self.tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 244, in load_module
return load_package(name, filename)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imp.py", line 216, in load_package
return _load(spec)
  File "<frozen importlib._bootstrap>", line 675, in _load
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/Users/me/git/sdk-python/tests/functional/__init__.py", line 2, in <module>
from ..common import *
  File "/Users/me/git/sdk-python/tests/common.py", line 16, in <module>
    import botocore.vendored.requests as requests
    ModuleNotFoundError: No module named 'botocore'

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)
  

Я установил следующее pyenv local 3.7.2 и pyenv global 3.7.2 .

Как я могу убедиться, что я работаю в правильной версии Python?

Ответ №1:

Попробуйте which nosetests , затем запустите python3.7 output_of_which_nosetests_here

Комментарии:

1. /Library/Frameworks/Python.framework/Versions/3.6/bin/nosetests

2. это означает, что ваш pip установлен в python 3.6 среде. Попробуйте удалить его и установить снова с python 3.7 активной средой.

3. ХОРОШО, будет сделано. Прежде чем я это сделаю, возможно ли установить его глобально?

4. да, вы можете с sudo pip install nose (без активированной среды) Однако это не рекомендуется