ipython против ~/.local/bin/ipython

Я считаю, что, так как я установил IPython Notebook через pip --user Теперь у меня есть два экземпляра каждого из модулей Python, IPython и других модулей Python: исходные экземпляры, поставляемые с моей системой Ubuntu, и новые локальные экземпляры, устанавливаемые pip.

$ which ipython
/usr/bin/ipython

$ cat /usr/bin/ipython
from IPython import start_ipython    
start_ipython()

Есть два способа вызова ipython (ipython а также ~/.local/bin/ipython) эквивалент?

2 ответа

Являются ли два способа вызова ipython (ipython и ~/.local/bin/ipython) эквивалентными?

Краткий ответ: нет, они не эквивалентны. Теперь давайте посмотрим, почему:

Pip может устанавливать пакеты в собственном домашнем каталоге пользователя, если вы используете его с --user вариант, как вы сделали. Когда вы делаете это, он устанавливает пакет в ~/.local (обратите внимание, что этот относительный путь расширяется до чего-то вроде /home/username/.local), однако у вас все еще есть только один глобальный интерпретатор Python на /usr/bin/python, Это делает различные библиотеки или модули, которые вы устанавливаете таким образом, доступными только локально, что означает, что они не являются общими для пользователей.

Если вы вызываете любую программу с относительным или абсолютным путем, она запускается в зависимости от того, какой исполняемый файл находится в конце этого пути, если он существует. В этом случае относительный путь ~/.local/bin/ipython указывает на локальный экземпляр IPython.

Когда вы вызываете исполняемый файл, просто набрав его имя, как ipython переменная окружения PATH используется для определения того, что запускать. То, что на самом деле работает, будет зависеть от его приоритета в вашем PATH. Это может быть или не быть тот же исполняемый файл, что и на ~/.local/bin/ipython,

Используйте команду which, чтобы проверить, какой исполняемый файл будет запущен, если вы введете только имя команды: which ipython, Это даст вам путь к нему.


Кроме того, если вы уже устанавливаете пакеты локально, а не в масштабе всей системы, я бы посоветовал вам использовать виртуальные среды, это облегчит вашу жизнь (большую часть времени), даст virtualenv или же venv попытка

Нет, IPythons - это не версия Python, а пара утилит для Python. Преимущественно улучшенная командная оболочка и блокнот. Но вы используете свою обычную установку Python.

Вы можете установить Ipython с собственной версией Python, но это не то, что делает pip по умолчанию.

Pip может устанавливать пакеты локально, если вы дадите ему ключ -user, если вы это сделали, то у вас все еще будет только одна установка на python, но с разными библиотеками для разных пользователей.

Наконец, если вы звоните с ~/.local/bin/ipython вероятно, будет запускать версию ipython пользовательского уровня вместо системного (если вы оба установили). Если он запускает то же самое или иное, чем ввод ipython, зависит от вашего пути.

Другие вопросы по тегам