Что отображается при вводе «списка conda» в терминал? - PullRequest
0 голосов
/ 19 июня 2019

Согласно документации, список conda возвращается «список пакетов и версий, установленных в активной среде» Но когда я запускаю это, я получаю вещи, которые я распознаю как пакеты, такие как «cairo», но также и сам «python» (версия 3.7.3), который является языком, и «spyder» и «jupyter», являющиеся интерактивными средами .

(Интересно, что python2 здесь не указан, но есть в списке conda env. Единственная причина, по которой я могу думать об этом, заключается в том, что версия Anaconda, которую я использую (3), поставляется с python 2, а python 3 уже был установлен поверх этого.)

Я пытаюсь понять, что представляет собой каждый из этих элементов, и как я могу получить к нему доступ при использовании различных сред. Доступны следующие среды: base, omnipath, pypath, python2, rstudio). Я работаю в рамках omnipath, и мне кажется, что это нормально работает для запуска скрипта, в котором я «импортирую pypath» (и все же оба они являются средами !? Мне кажется, что они находятся на «одном уровне», который вот почему меня не устраивает идея вызова одного из другого).

В моем скрипте мне также нужно вызвать ipython, который указан в списке conda, когда он находится в базовой среде, а не в omnipath или pypath. Это кажется проблемой, так как я получаю сообщение об ошибке «нет модуля с именем IPython», потому что в этой среде его нет в списке «conda».

Поскольку мой сценарий, по-видимому, способен импортировать pypath в среде omnipath, я подумал, что, возможно, я смогу работать «из базы» и импортировать omnipath так, как требуется, и тогда IPython будет работать нормально. За исключением того, что я получаю сообщение об ошибке «нет модуля с именем omnipath».

Надеюсь, это проиллюстрировало мою путаницу: pypath не указан в качестве модуля и не представлен в «списке conda», а указан как среда. Эти факты точно такие же, как и для омнипата.

И все же я могу «импортировать pypath» и «import ipython» и даже «импортировать IPython» (все еще не уверен, почему они отличаются) без ошибок из базы и из среды omnipath, но не из pypath.

Я подозреваю, что наиболее подходящим ответом на мои запросы является ссылка на понимание того, как эти разные объекты программирования сочетаются друг с другом,

1 Ответ

1 голос
/ 20 июня 2019

Python - это язык программирования, это правильно. Но python также является именем пакета conda, который содержит интерпретатор Python. spyder - это IDE, которая предоставляется в виде пакета conda. jupyter - это метапакет conda: он не имеет собственного содержимого, но объявляет все зависимости от других пакетов, реализующих ноутбуки Jupyter.

conda list или conda env export печатает список пакетов в one сред conda. Вы можете использовать -n <envname>, чтобы указать, для какой среды вы хотите получить список пакетов. Каждая среда может иметь свою версию интерпретатора Python.

Когда вы пишете сценарий, который зависит от определенных пакетов, вы должны создать новую среду Anaconda для этого сценария. Затем установите все пакеты, необходимые скрипту, в эту среду. НЕ пытайтесь импортировать вещи из разных сред. Каждая среда выступает за себя. Весь смысл создания сред состоит в том, чтобы хранить зависимости пакетов разных программ раздельно.

...