Настройка python

#python #python-3.x

#python #python-3.x

Вопрос:

я все еще новичок в python, и мне действительно нужна помощь в понимании проблемы, с которой я столкнулся.

Предположительно, я успешно установил python3 и запустил пару проектов с python, но моя проблема в том, что на моем компьютере есть 3 разных пути python, и я не знаю, какой из них я использую.

сначала я сделал это: which -a python3

 /Library/Frameworks/Python.framework/Versions/3.8/bin/python3

/usr/local/bin/python3

/usr/bin/python3
 

Затем я подключился к каждому из этих файлов и сделал это ls -ld python3

 lrwxr-xr-x  1 root  admin  9 26 Jan  2020 python3 -> python3.8
lrwxr-xr-x  1 *******  admin  40 24 Mar 09:22 python3 -> ../Cellar/python@3.9/3.9.2_2/bin/python3
-rwxr-xr-x  1 root  wheel  31488 22 Sep  2020 python3
 

Может кто-нибудь объяснить мне, что это значит, а также почему они не указывают на один и тот же файл?

вот мой ~/.bash_profile

 # Setting PATH for Python 3.8
# The original version is saved in .bash_profile.pysave

alias python=python3

# Add Visual Studio Code (code)
export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"

export ANDROID_SDK=/Users/*****/Library/Android/sdk

export PATH=/Users/*******/Library/Android/sdk/platform-tools:$PATH

export WORKON_HOME=$HOME/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

source /usr/local/bin/virtualenvwrapper.sh

 

Я использую Mac с macOS Catalina в качестве операционной системы и bash в качестве оболочки.

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

1. Я думаю, это обычно означает, что у вас есть многократная установка python3 из нескольких источников, таких как Brew, двоичный релиз и т. Д., И их папка, содержащая их собственный исполняемый python3 файл, Сохраняется в разных местах

2. Из путей ясно, что вы находитесь на macOS, но в дальнейшем упоминание вашей платформы и того, как именно вы установили Python, было бы хорошей деталью для включения в любой вопрос такого типа.

3. Если вы используете Zsh, содержимое вашего .bash_profile файла не будет иметь никакого значения. Возможно, также укажите, какую оболочку вы используете ( echo "$SHELL" )

4. @tripleee что вы подразумеваете под на Zsh?

5. @tripleee обновил мой bash_profile и добавил мою ОС и оболочку в вопрос

Ответ №1:

У вас установлена система python3 (возможно, 3.8.2, если вы находитесь на Big Sur) /usr/bin/python3 и установлена домашняя версия, в /usr/local/bin/python3 которой есть символическая ссылка на реальное местоположение, где brew она установлена. Все это вполне нормально, хотя, если для ваших нужд было достаточно установленного в системе Python 3, установка другой копии с помощью Homebrew была излишней как таковой. Но это все вполне нормально; для существования вашей системы требуется определенная версия, и вы не должны ее трогать, но вы можете установить несистемную версию параллельно и использовать ее для своих личных нужд, если хотите.

Вы можете использовать явные пути для запуска любой конкретной версии (попробуйте /usr/bin/python3 --version и /usr/local/bin/python3 --version ), но обычно вы не хотите или не должны этого делать. Из коробки ваш PATH упорядочен так, что /usr/local/bin имеет приоритет над /usr/bin , так что локально установленные версии затеняют системные версии по умолчанию при обычном использовании.

Кроме того, у вас есть путь к коду Visual Studio, добавленный дважды, и вам не нужно export PATH делать это несколько раз (или вообще, поскольку файлы запуска системы уже будут помечены для этой переменной export ).

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

1. Привет, спасибо, что перезвонили мне. На самом деле я использую macOS Catalina, а не Big Sur. Это правда, я некоторое время назад загрузил python с веб-сайта python, затем я прочитал пару комментариев, в которых предлагалось установить с помощью brew, поскольку при обновлении brew обновляет его автоматически. когда я запускаю /usr/local/bin/python3 --version , я получаю Python 3.9.2 , и когда я запускаю /usr/bin/python3 --version , я получаю Python 3.7.3 . как насчет этого пути /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 , он имеет преимущество над другими? также, когда я получаю свою версию python, ее 3.8.1

2. Я не вижу причин для этого.

3. В зависимости от того, что имеет смысл для вашего варианта использования. Для новой разработки, ориентированной на новые установки Python, имеет смысл использовать более новую версию; но если вы разрабатываете для пользовательской базы или платформы, где вам необходимо поддерживать 3.8, использование этого имеет больше смысла. Если вы не можете решить так или иначе, возможно, пока используйте более новую версию, поскольку у вас меньше шансов столкнуться с проблемами, когда вы найдете что-то в Интернете и попробуете это.

4. Да, удалите это из .bash_profile и в командной строке PATH=${PATH#*:} или более подробно PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Visual Studio Code.app/Contents/Resources/app/bin" (последнее также удаляет дубликат из конца PATH )

5. Я использую разные версии Python для разных проектов. Некоторые вещи, над которыми я работаю, должны быть совместимы с версией 3.6. Я использую pyenv , чтобы сохранить несколько доступных версий, но мне не особенно нравится его общая модель, поэтому я создаю новую локальную virtualenv вручную для каждой версии для каждого проекта, который необходимо протестировать на нескольких версиях.