порядок путей поиска python в Debian

У меня есть два модуля google.protobuf в моем Debian(stretch).

  1. /usr/local/lib/python2.7/dist-packages/google
  2. /home/myuser/.local/lib/python2.7/site-packages/google (устанавливается с помощью pip --user)

Я хотел бы импортировать 2, но python всегда дает мне 1, а ipython импортирует 2. Я пытался установить PYTHONPATH таким образом, чтобы /home/myuser/.local/lib/python2.7/site-packages/ был первым в нем, но не работает.

Есть ли способ заставить python сначала искать мой $HOME/.local/lib/python2.7/site-packages/?


person weitang114    schedule 14.01.2016    source источник


Ответы (1)


Да. См. здесь официальное описание того, как python определяет, какой модуль импортировать первым: https://docs.python.org/2/tutorial/modules.html#the-module-search-pathkk

См. здесь, как изменить это поведение по умолчанию: http://www.hasenkopf2000.net/wiki/python/how-override-pythons-module-import-order/

Из двух решений, представленных на сайте hasenkopf, второе будет менее проблематичным, если вы передумаете, какой модуль вы хотите использовать. Вы просто редактируете файл, а не запоминаете, какие символические ссылки вы создали. Вкратце, код такой:

import sys
# Assume path to module is
# /path/to/recent/version/of/module.py
sys.path.insert(0,"/path/to/recent/version/of")
import module

Вы размещаете его в верхней части вашего сценария.

person neallred    schedule 18.01.2016