2013-02-05 15 views
8

Zainstalowałem emacs-jedi, aby uzyskać pewne uzupełnienie kodu dla Pythona w emacs. Ogólnie muszę powiedzieć, że jestem pod wrażeniem! Działa dobrze po wyjęciu z pudełka i szybko znajduje uzupełnienia dla wbudowanych bibliotek. Jednak używam Pythona do celów naukowych i polegam na numpy i scipy dla mojej pracy. Z jakiegoś powodu nie otrzymuję żadnych uzupełnień dla tych modułów.emacs-jedi nie znajduje numpy uzupełnień

przykład:

import numpy 

testVector = numpy.array([1,2,3]) 

się wpisywanie testVector. i czekanie, nic się nie pojawia

Odpowiedz

1

Mogę uzyskać taką przypadek. Jak po

enter image description here

może używać starych modułów wymogu (jedi, EPC, argparse). Powinieneś zaktualizować je i spróbować ponownie.

+0

Nawet jeśli epc i jedi zostały automatycznie zainstalowane przez el-get, gdy zainstalowałem emacs-jedi, zrobiłem git pull w tych folderach tylko po to, aby mieć pewność, że mam najnowszą wersję. Zrobiłem też sudo pip install argparse --upgrade, która powiedziała mi, że mam już najnowszą wersję argparse. Tak więc zależności wydają się aktualne, ale nadal nie otrzymuję zakończenia dla numpy lub scpipy. – mike

+0

Hmm, używam epc 0.0.3 i jedi 0.5b5. Sprawdź wersję epc, jedi. – syohex

5

Zastanawiam się, dlaczego to nie działa. Wygląda na to, że problem występuje w postaci sys.path, ale powinien działać bez żadnej konfiguracji. Ale tutaj jest jakiś pomysł na naprawę brutalnej siły.

(1) Uruchom następujący skrypt, aby uzyskać ścieżkę ładowania dla numpy.

import os 
import numpy 
print(os.path.dirname(os.path.dirname(numpy.__file__))) 

(2) Ustaw jedi:server-args jak to dobitnie dodać ścieżkę.

(setq jedi:server-args 
     '("--sys-path" "THE/PRINTED/PATH/FOR/NUMPY" 
     "--sys-path" "THE/PRINTED/PATH/FOR/SCIPY")) 

Patrz także: http://tkf.github.com/emacs-jedi/#jedi:server-args


Edycja 1

Czytając swój komentarz na odpowiedź @ syohex jest, wygląda na to, miesza się kilka metod instalacji. jeid.el używa virtualenv "env /" w katalogu, w którym masz jedi.el, jeśli istnieje. el-get automatycznie tworzy "env /", jeśli masz virtualenv. Tak więc, jeśli lubisz instalacji systemu, trzeba powiedzieć Jedi.el ignorować "EVN /" w ten sposób:

(require 'jedi) 
(setq jedi:server-command (list "python" jedi:server-script)) 

Patrz także: http://tkf.github.com/emacs-jedi/#jedi:server-command


Edycja 2

Nie mam pojęcia, dlaczego tak się dzieje z twojego opisu. Oto kilka sposobów na ograniczenie problemu.

  1. Run make tryout w katalogu, w którym jest zainstalowany jedi.el (jak ~/.emacs.d/el-get/jedi/).

    To otwiera czyste (tzn. Nie odczytuje konfiguracji) Proces Emacs z minimalną konfiguracją dla jedi.el. Sprawdźmy, czy możesz wykonać numpy i scipy.

  2. Czy można importować numpy i scipy w Emacs? Możesz mieć inną zmienną środowiskową w Emacs i powłoce. Uruchom M-! python -c 'import numpy' RET. Jeśli to nie daje błędu, to jest w porządku.

  3. Czy można zaimportować numpy i scipy za pomocą env/bin/python? Najlepszym sposobem na sprawdzenie tego jest Emacs.

    Najpierw przejdź do katalogu, w którym zainstalowany jest plik jedi.el (np. C-x C-f ~/.emacs.d/el-get/jedi/ RET).

    Następnie uruchom M-! env/bin/python -c 'import numpy' RET. Jeśli nie spowoduje to błędu, powinno być możliwe zaimportowanie numpy i scipy.

Mam nadzieję, że przynajmniej jeden z nich daje błąd, w przeciwnym razie muszę pomyśleć o innej możliwości.

+0

Udaje mi się to zrobić dopiero po uruchomieniu jedi od jedi: polecenie serwera jest nieważne przed tym, więc jest jedi: server-script. Próbowałem umieścić go w haczyku w trybie Pythona tak, aby był uruchamiany tylko po jedi: setup, ale ciągle otrzymuję błędy zmiennej void. Nie sądzę, że pomieszałem wszelkie metody instalacji - postępowałem zgodnie z instrukcjami instalacji za pomocą el-get dokładnie. – mike

+0

Clrification: Próbowałem najpierw wymusić włączenie numpy ścieżki zgodnie z opisem. To niczego nie zmieniło, wciąż nie było ukończenia. – mike

+0

Po prostu wywołaj '(require 'jedi)' przed użyciem 'jedi: server-script'. Możesz go wywołać w trybie python-mode-hook, jeśli chcesz. – tkf

Powiązane problemy