Nigdy nie powinieneś modyfikować ścieżki bezpośrednio, ani poprzez zmienne środowiskowe, ani sys.path
. Czy używasz systemu operacyjnego (np. apt-get
), Czypip
wirtualnego, pakiety zostaną zainstalowane w lokalizacji już na ścieżce.
W twoim przykładzie GNU Radio jest zainstalowane w standardowej site-packages
lokalizacji systemu Python 2 , która już znajduje się na ścieżce. Wystarczy wskazać PyCharm na właściwego tłumacza; jeśli nie, jest coś innego, co nie jest widoczne. Być może /usr/bin/python
nie wskazuje tego samego tłumacza, w którym zainstalowano GNU Radio; spróbuj wskazać konkretnie na python2.7
plik binarny. Lub PyCharm był nieco zły w wykrywaniu pakietów;File > Invalidate Caches > Invalidate and Restart
poleciłoby to ponowne skanowanie.
Ta odpowiedź obejmie sposób konfigurowania środowiska projektu, instalowania pakietów w różnych scenariuszach i konfigurowania PyCharm. Wielokrotnie odsyłam do Podręcznika użytkownika Python Packaging , napisanego przez tę samą grupę, która utrzymuje oficjalne narzędzia do pakowania Python.
Prawidłowy sposób tworzenia aplikacji w języku Python to użycie virtualenv. Pakiety i wersje są instalowane bez wpływu na system lub inne projekty. PyCharm ma wbudowany interfejs do tworzenia virtualenv i instalowania pakietów. Możesz też utworzyć go z wiersza poleceń, a następnie skierować na niego PyCharm.
$ cd MyProject
$ python2 -m virtualenv env
$ . env/bin/activate
$ pip install -U pip setuptools # get the latest versions
$ pip install flask # install other packages
W swoim projekcie PyCharm przejdź do File > Settings > Project > Project Interpreter
. Jeśli użyłeś virtualenvwrapper
lub PyCharm do utworzenia env, to powinna pojawić się w menu. Jeśli nie, kliknij koło zębate, wybierz Add Local
i zlokalizuj plik binarny Python w env. PyCharm wyświetli wszystkie pakiety w wybranym środowisku.
W niektórych przypadkach, takich jak GNU Radio, nie ma pakietu do zainstalowania pip
, pakiet został zainstalowany w całym systemie podczas instalowania pozostałej części GNU Radio (np. apt-get install gnuradio
). W takim przypadku powinieneś nadal używać virtualenv, ale musisz poinformować go o tym pakiecie systemowym.
$ python2 -m virtualenv --system-site-packages env
Niestety wygląda to trochę niechlujnie, ponieważ wszystkie pakiety systemowe będą teraz pojawiać się w twojej env, ale są to tylko linki, nadal możesz bezpiecznie instalować lub aktualizować pakiety bez wpływu na system.
W niektórych przypadkach będziesz mieć wiele rozwijanych pakietów lokalnych i będziesz chciał, aby jeden projekt używał drugiego pakietu. W takim przypadku możesz pomyśleć, że musisz dodać pakiet lokalny do ścieżki innego projektu, ale tak nie jest. Powinieneś zainstalować swój pakiet w trybie programowania . Wszystko to wymaga dodania setup.py
pliku do pakietu , który i tak będzie wymagany do prawidłowej dystrybucji i wdrożenia pakietu później.
Minimalna setup.py
dla twojego pierwszego projektu:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
Następnie zainstaluj go w env drugiego projektu:
$ pip install -e /path/to/first/project