Emacs python Elpy автозаполнение не работает для всех

Использование Mac OSC 10.13.4, emacs 25.3 (9.0), Python3

У меня могло быть несколько случаев автозаполнения Elpy для работы на python3, но по какой-то причине не всегда. Например,

numpy.

запускает автозаполнение, но,

pandas.

не.

Моя интуиция такова, что, хотя numpy входит в стандартную комплектацию python3, pandas - нет. Поэтому мне нужно, чтобы emacs указывал на каталог, в котором расположены дополнительные модули. Короче говоря, emacs не использует те же пути, что и python3 ... Я пытался добавить путь к текущим путям emacs, но мне всегда не удавалось добавить их. Как я могу это сделать?

Emacs python Elpy автозаполнение не работает для всехEmacs python Elpy автозаполнение не работает для всех

Numpy не входит в стандартную комплектацию Python 3; это сторонняя библиотека, как и Pandas, и они, скорее всего, установлены в одни и те же пакеты сайта (при условии, что вы выполнили тот же pip, conda или любые другие команды для их установки).

abarnert 24.04.2018 19:55

Хорошо, моя интуиция ошибалась. И да, я установил с тем же пипсом. Мне все еще нужно, чтобы emacs "видел" панд. какой-нибудь свинец?

Cy Bu 24.04.2018 20:09

У вас есть несколько Python, оба с установленным numpy, но только один с пандами, и emacs указывают на неправильный?

abarnert 24.04.2018 20:10

Я так не верю. когда я делаю pip show <package>, я получаю: /Library/Frameworks/Python.framework/Versions/3.5/lib/python‌ 3.5 / site-packages для pandas и numpy.

Cy Bu 24.04.2018 20:15

На самом деле, если вы используете macOS, у вас делать есть несколько Pythons, знаете вы об этом или нет, а у другого, вероятно, есть numpy, но не pandas, и, вероятно, у него даже нет pip. И, скорее всего, это то, что видит эльпи. Я написал ответ, чтобы подробно объяснить, в том числе как вы можете проверить, является ли это вашей реальной проблемой или нет.

abarnert 24.04.2018 20:37

В качестве примечания: пожалуйста, не размещайте скриншоты кода или другого текста; просто скопируйте и вставьте текст.

abarnert 24.04.2018 20:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
6
1 467
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема почти наверняка в том, что elpy использует не тот Python, который вы думаете.

Поскольку вы используете macOS, у вас есть как минимум еще один Python - предустановленная Apple версия Python 2.7 в /usr/bin/python. И в большинстве версий macOS это включает в себя специальный каталог «Extras», полный вещей, которые обычно не встроены в Python, включая numpy, но не pandas, а в некоторых версиях даже pip.

Итак, ваши pip show numpy и pip show pandas используют Python 3.5 pip, потому что это единственный pip, который у вас есть.

Но если elpy находит Apple Python 2.7, а не Python 3.5, который вы установили, он найдет Extras numpy и не найдет никаких pandas.

Вы также должны увидеть другие странные проступки, такие как elpy, пытающийся завершить print как оператор Python 2.x, а не как функцию Python 3.x, но самый простой способ диагностировать проблему - не углубляться во все эти детали, а вместо этого просто M-x elpy-config. Должно появиться что-то вроде этого:

Virtualenv........: None
RPC Python........: 2.7.10 (/usr/bin/python)
Interactive Python: python (/usr/bin/python)
Emacs.............: 25.3.0

… так далее.

Если да, то ответ заключается в том, что вам необходимо исправить конфигурацию elpy, чтобы использовать /usr/local/bin/python3 (или любой другой подходящий путь к вашему Python 3.5).

Я считаю, что простая настройка elpy-rpc-python-command заставит его правильно подобрать все остальное. Или вы можете просто сделать это из самого elpy-config. Но это, вероятно, лучший вопрос для emacs.SE, чем тег Python на SO.

У вас есть очень важный момент: когда я запускаю pip из M-x eshell, он сообщает мне, что pip не установлен. хотя мой elpy-config показывает: {Virtualenv ........: None RPC Python ........: 3.5.2 (/ usr / local / bin / python3) Интерактивный Python: / usr / local / bin / python3 (/ usr / local / bin / python3) Emacs .............: 25.3.1 Elpy ..............: 1.19. 0 Джедаи ..............: 0.12.0 Веревка ..............: 0.10.7 Autopep8 .......... : 1.3.5 Yapf ..............: 0.21.0 Проверка синтаксиса ....: Не найдено (flake8 [...] Каталог ~ / .local / bin / не в вашем PATH [...]}

Cy Bu 24.04.2018 20:46

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

abarnert 24.04.2018 20:53

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