иметь локальный переопределенный глобальный - PullRequest
1 голос
/ 23 февраля 2012

Я использую сервер, на котором у меня нет прав администратора, и мне нужно использовать последнюю версию numpy. Системный администратор настаивает на том, что он не может обновить глобальный NumPy до последней версии, поэтому я должен установить его локально.

Я могу сделать это без проблем, но как мне убедиться, что «import numpy» приводит к импортированию более новой локальной установки, в отличие от более старой глобальной версии? Я могу настроить свою PYTHONPATH, но я также хочу использовать некоторые из глобальных импортов, поэтому я не могу исключить все глобальные пакеты.

Кстати, я на CentOS 6.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 23 февраля 2012

Лучшее решение для этого - установить и использовать virtualenv , который существует именно по этой причине.

1 голос
/ 24 февраля 2012

В качестве альтернативы использованию virtualenv, вы можете использовать PYTHONPATH или изменить sys.path.

PYTHONPATH может быть помещен в ваш ~/.bash_profile (или любой другой файл запуска, подходящий для используемой вами оболочки). Или в python скрипте-обёртке, который находится в вашем PATH до python системы, например ::

$ cat ~/bin/python # assuming ~/bin is in PATH before /usr/bin
#!/bin/bash
PYTHONPATH=<path-to-your-libs> /usr/bin/python

Или, возможно, вы захотите быть явным и дать команду Python использовать пользовательские библиотеки только тогда, когда вас об этом попросят. В этом случае переменную sys.path можно изменить напрямую, например:

import sys, os
sys.path.insert(0, os.path.expanduser("~/my_python_libs"))
import numpy # searches for numpy first in "~/my_python_libs"

Может быть удобно поместить приведенный выше фрагмент кода, который изменяет пути поиска модуля python, в модуль многократного использования и импортировать этот модуль, так что при изменении путей необходимо изменить только этот модуль.

Для получения дополнительной информации см. 6.1.2. Путь поиска модуля .

Лично я компилирую последний Python из исходного кода вместе со всеми сторонними библиотеками, которые я использую. Это позволяет легко переключаться на новейшие библиотеки и не зависеть от вашего дистрибутива Linux (дистрибутивы Linux, особенно корпоративные, не могут идти в ногу с обновлениями библиотек Python).

1 голос
/ 23 февраля 2012

Python ищет путь по порядку, , поэтому просто поместите каталог, в котором вы установили NumPy, первым в пути.

Вы можете проверить numpy.version.version, чтобы убедиться, что вы получаете нужную версию.

0 голосов
/ 27 февраля 2012

Самый простой способ сделать это - использовать опцию --user при сборке и установке numpy

$ python setup.py install --user

или

$ pip install --user numpy

Для этого не требуются административные права инет необходимости вмешиваться в ваш sys.path

virtualenv также действительно полезно, но не обязательно, если вы не хотите использовать разные версии numpy для разных приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...