python: понимание нескольких версий, символических ссылок и virtualenv - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужна помощь в понимании организации версий Python на моем MacOS 10.12.У меня есть и pip, и brew, и нет conda.Раньше я работал с Python 3.6.5, но потом brew обновил и установил Python 3.7.0.

Тогда у меня возникла следующая проблема при попытке создать новую виртуальную среду:

$ virtualenv venv_pointnet
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python3/bin/python3.6: bad interpreter: No such file or directory

Итак, я добавил эту строку в свою ~/.bash_profile:

alias python3="/usr/local/Cellar/python/3.6.5/bin/python3.6"

Но проблема все еще сохраняется ...

Вот некоторая информация о Python в моей системе.

$ head -1 $(which virtualenv)
#!/usr/local/opt/python3/bin/python3.6

$ python3 --version
Python 3.6.5

$ which -a python3
/usr/local/bin/python3 

$ ls -l /usr/local/bin/python3
lrwxr-xr-x  1 myUser  admin  34 Oct 28 21:51 /usr/local/bin/python3 -> ../Cellar/python/3.7.0/bin/python3

$ ls -l /usr/local/opt/python3
lrwxr-xr-x  1 myUser  admin  22 Oct 28 21:51 /usr/local/opt/python3 -> ../Cellar/python/3.7.0

Мои вопросы

  1. Почему существует несколько python3s, но $which -a python3 возвращает только один каталог?

  2. Если моя текущая версия python3 3.6.5 благодаря псевдониму, то почему до сих пор есть символическая ссылка на 3.7.0?

  3. Как я могузаставить мою virtualenv работать?Может ли его интерпретатор по-прежнему оставаться 3.6.5 или я должен изменить его на 3.7.0?

  4. Что еще может «сломать» обновление brew в отношении версий и символических ссылок Python?

Я знаю, что вопросы очень широки, но я бы очень признателен за все, что поможет мне лучше понять этот материал, связанный с питоном.Помимо программирования на языке Python, я больше не разбираюсь в его настройке>. <</p>

1 Ответ

0 голосов
/ 14 декабря 2018

1

Поскольку /usr/local/bin/python3 является символической ссылкой на одну конкретную версию

2

Вы создали псевдоним, но на самом деле символическая ссылка * не изменяется1008 *.Если вы действительно хотите использовать версию 3.6.5, вы можете сделать что-то вроде этого:

rm /usr/bin/python3
ln -s /usr/bin/python3.6 /usr/bin/python3

, который создает соответствующую символическую ссылку

3

Я не верю, что вы можете изменить версию python of virtualenv.Возможно, вы захотите попробовать переустановить его

4

¯ \ _ (ツ) _ / ¯

...