Папки импорта можно извлечь, добавив следующий исходный код:
import sys
print sys.path
Пример автоматической генерации символической ссылки:
ln -s \`pip show em | grep "Location"| cut -d " " -f2\` \`python -m site --user-site\`
вместо em вы можете использовать другой пакет, который вы «только что установили, но питон не видит его»
ниже я объясню более подробно, как это требуется в комментарии.
Предположим, вы установили модуль python em или pyserial с помощью следующей команды (примеры для ubuntu):
sudo pip install pyserial
и результат такой:
Collecting pyserial
Downloading pyserial-3.3-py2.py3-none-any.whl (189kB)
100% |████████████████████████████████| 194kB 2.3MB/s
Installing collected packages: pyserial
Successfully installed pyserial-3.3
вопрос будет следующим - python не видит модуль pyserial, почему? потому что место, где был установлен модуль, не является тем местом, которое python ищет для вашей конкретной учетной записи.
решение - мы должны создать символическую ссылку с пути, по которому pyserial прибыл, на путь, который ищет ваш python.
Команда создания символической ссылки будет такой:
ln -s <what_to_link> <where_to_link>
вместо того, чтобы вводить точное местоположение, мы просим pip сообщить нам, где он хранит модули, выполнив команду:
pip show pyserial | grep "Location"| cut -d " " -f2
вместо того, чтобы вводить точное местоположение, мы просим python сообщить нам, где он ищет устанавливаемые модули, выполнив команду:
python -m site --user-site
обе команды должны быть экранированы с помощью символа "` "(обычно слева от кнопки 1 для клавиатур США)
в результате для ln будет предоставлена следующая команда и будет создана отсутствующая символическая ссылка:
ln -s /usr/local/lib/python2.7/dist-packages /home/<your_username>/.local/lib/python2.7/site-packages
или что-то подобное, в зависимости от вашего дистрибутива и значений по умолчанию для python / pip.