2016-11-21 1 views
0

Это Python 2.7.9, установленный в контейнере Docker Debian. Он не использует virtualenv. Здесь есть кое-что, что я может быть делать принципиально отличается Но независимо от того, что я следующий очень простой вопрос:.?pip.main (["install", "--user", ...] не работает

Почему не эта работа

>>> import pip 
>>> pip.main(["install", "--user", "httmock"]) 
...installs httmock... 
>>> import httmock 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named httmock 
>>> 

Для сравнения, это работает отлично:

>>> import pip 
>>> pip.main(["install", "httmock"]) 
...installs httmock... 
>>> import httmock 
>>> 

Спасибо.

+2

Обычный рецепт: проверьте 'sys.path'. Я сомневаюсь, что '~/.local/lib/...' по умолчанию находится в списке путей поиска. – user3159253

+0

Я думаю, что вы правы, кажется, что это не добавлено до тех пор, пока я не установил что-то с помощью '--user'. Не стесняйтесь отвечать ... –

ответ

1

Полезный комментарий от user3159253 появился на мой вопрос в то же самое время, когда я нашел это сам. Поскольку другой пользователь не набирает свой ответ, я сделаю это.

По-видимому, локальные пакеты пользовательского сайта автоматически не добавляются к параметрам поиска для import до следующего запуска вашего приложения. Чтобы заставить его, добавьте пакеты локального пользовательского сайта в путь после, работающий pip install --user ....

pip.main(["install", "--user", "httmock"]) 

home_folder = os.path.expanduser("~") 
user_site_packages_folder = "{}/.local/lib/python2.7/site-packages".format(home_folder) 
if user_site_packages_folder not in sys.path: 
    sys.path.append(user_site_packages_folder) 

Я предполагаю, что это необходимо, только если для локального пользователя уже установлены пакеты. Я также предполагаю, что фактический вызов sys.path.append вызывает особое поведение, поскольку добавление папки пакетов локального пользовательского сайта в путь до, работающий pip, не сработало, но это не относится к этому вопросу.

 Смежные вопросы

  • Нет связанных вопросов^_^