Рубрики
Без рубрики

Решение проблем с VirtualenVWrapper с использованием несоответствующих версий Python

Понимание приоритета пути исправления несоответствующей версии Python с VirtualenVWrapper. Помечено с Python, Virtualenv, VirtualenVwrapper, путь.

TLDR

  • понять приоритет пути
  • понять, где обычно устанавливается путь
  • Убедитесь, что ваша версия Python использует соответствующую команду Shell PIP

Хотя это ориентировано на специально для VirtualenVwrapper, это может помочь вам понять, почему команда оболочки, которую вы установили, не работает по какой-то причине.

Если вы когда-либо использовали VirtualenVWrapper, вы знаете, насколько это полезно для смешивания и сопоставления версий Python и иметь отдельные силосы зависимости для каждого проекта, чтобы вы не использовали один и тот же PIP для каждого проекта. В некоторых редких случаях VirtualenVWrapper может дать вам проблемы, если у вас установлены несколько версий Python.

В моем случае mkvirtualenv потерпит неудачу при указании другого интерпретатора Python, чем то, что по умолчанию. Я хотел использовать Python 3.7, и он собирал пакеты PIP из Python 2.7. Команда, которую я использовал, было что-то вроде mkvirtualenv -p python3 my-env Отказ

После анализа моей установки была пара проблем. У меня было несколько версий Python из разных источников, некоторые из MACPPORTS, некоторые из доморозков и встроенного Python, который пришел предварительно установлен с Mac OS.

Для того, чтобы решить, что происходит, я должен был понять проблему. Окончательная проблема заключалась в том, что Python 3.7 пытался использовать PIP для Python 2.7. Это было очевидно из исключений Python, где было очевидно, что используемый переводчик был Python 3.7, но трассировка стека показала пути, ссылающиеся на Python 2.7.

Что мне должно было, чтобы убедиться, что правильный PIP был установлен для Python 3.7. Домашний, по крайней мере, на моей машине, принял последнюю запись на траекторию BIN MACPPORTS. Это важно понимать, потому что дорожка Way Works очень прост. Какой бы путь был определен первым, будет использоваться первым, чтобы найти команду оболочки, которую вы хотите запустить. Так что если вы запустите $ Python и /opt/local/bin определяется первым по пути, то он будет разрешен на /opt/local/bin/python Отказ

Я думал, что смогли удалить Python Macports из картины, чтобы увидеть, было ли это тем, что вызывает проблемы. Для этого я использовал Порт Выберите Python None Отказ Насколько я могу сказать, что это сделал, было удалить симлитурию от тракта Bin Macports Bin. По какой-то причине это не сделало ничего, что было странным. Поэтому мне нужно было расследовать больше.

Я вспомнил, чтобы следить за тем, что в пути в основном контролирует, какую команду Shell забрать первым. Когда я сделал echo $ path. Я заметил, что все еще была ссылка на Macports Python. Это определенно не должно произойти. Я уже побежал Порт Выберите Python None Отказ Окружающая среда $ Path устанавливается в нескольких местах. В общем, вот пара мест, чтобы посмотреть с самым высоким приоритетом, перечисленным в списке:

  • /так далее/профиль
  • /так далее/Bashrc.
  • ~/.bash_profile
  • ~/.profile.
  • ~/.bashrc.

Винприт был в ~/.profile. Была запись, которая предложена $ Path с Macports Python Version Export Path =/opt/local/library/frameworks/python.framework/versions/2.7/bin: $ path . После того, как я прокомментировал, что моя оболочка закончилась, поднимая версию на дому, как я собирался. Я проверял это, запустив Какой питон и видя, что он поднимался от дорожки домой Bin /usr/local/bin а не от Macports Bin Path /opt/local/bin Отказ Произошла проблема, хотя команда «Домашний Python» была на самом деле Python 2.7, а не 3.7 я хотел использовать.

Я обнаружил, что на домовете устанавливает Python 3.7 в виде Python3. Я мог бы только сделать символическую ссылку с Python3 Python, но тогда мне нужно будет сохранить вкладки, которые я на самом деле сделал это. Macports имеет Порт выберите Команда, где я мог бы поменяться разными версиями одной и той же программы, но домой не имеет этого. Наиболее близкая вещь является варевой ссылкой и Unlink, но она не работает так же, как в маклах. Все, что он делает, удаляет программу с пути домой Bin. Так что это на самом деле не помогло мне.

Когда я возвращался, я вспомнил, что по какой-то причине Python 3.7 пытался использовать PIP, установленный для Python 2.7. Когда я побежал Brew Link -VD Чтобы показать мне многолетний выход, не было никаких ссылок на PIP, которое я нашел очень подозрительно. После некоторого поиска Google я обнаружил, что кто-то порекомендовал сделать Brew Rebstall Python. Это оказалось решающей командой, которая установлена PIP для Python 3.7. Он закончил с использованием установки PIP, но варева называет двоичный PIP3 вместо PIP. В доме, PIP для Python 2.7.

Следующая часть очень важна, потому что это не так просто, как указание версии интерпретатора Python, которую вы хотели бы использовать в mkvirtualenv -p python3. . Похоже, VirtualenVWrapper по умолчанию использует версию Python и версию PIP, которая в настоящее время установлена в настоящее время. Как я уже упоминал, прежде чем он Python 2.7 от домогота, который установлен. Поэтому, чтобы обойти, что VirtualenVWrapper имеет переменную среды, которую вы можете установить в переводчик Python, который вы хотели бы использовать для самого VirtualenVWRapper. Это называется virtualenvwrapper_python. Вы устанавливаете его на абсолютный путь переводчика Python, который вы хотели бы использовать. В моем случае я сделал Экспорт virtualenvwrapper_python = `Какой python3` Отказ Теперь, когда я бегу mkvirtualenv -p python3 , он не бросает какие-либо исключения Python, пытаясь использовать PIP для Python 2.7.

Оригинал: “https://dev.to/2upmedia/solving-problems-with-virtualenvwrapper-mismatched-python-versions-57el”