2013-11-13 3 views
2

Если вы хотите использовать заданный python двоичный код, вы можете добавить PATH.Подготовить sys.path из оболочки?

Если Вы хотите использовать данный libpython Вы можете предварять LD_LIBRARY_PATH

Теперь предположим, что вы хотите использовать данный каталог пакета. Я попытался PYTHONPATH - но он не работает:

$ python -c 'import sys; print sys.path[:2]' 
['', '/home/boris/.local/lib/python2.7/site-packages'] 
$ PYTHONPATH="/home/boris/test/lib/python2.7/site-packages" python -c 'import sys; print sys.path[:2]' 
['', '/home/boris/.local/lib/python2.7/site-packages'] 

Для того, чтобы сделать это Вы должны были бы сделать что-либо в сценарии:

import sys 
sys.path.insert(0, "/home/boris/test/lib/python2.7/site-packages") 

или сделать специальный usercustomize.py в неплатеже site-packages с такое же содержимое.

Есть ли способ изменить sys.path из раковины?

behaivior Я ищу это:

$ python -c 'import sys; print sys.path[:2]' 
['', '/home/boris/.local/lib/python2.7/site-packages'] 
$ your-shell-command 
$ python -c 'import sys; print sys.path[:2]' 
['/home/boris/test/lib/python2.7/site-packages', ''] 

Edit:

Я не вижу никакого вреда, если реж будет второй:

['', '/home/boris/test/lib/python2.7/site-packages'] 

но

~: PYTHONPATH="/home/farhad" python -c 'import sys; print sys.path[:2]' 
['', '/home/boris/.local/lib/python2.7/site-packages'] 

не работает для меня. Вероятно, потому что у меня есть usercustomize.py (см. Также я хочу ~/.local libs до общесистемных).

+3

Зачем вам нужно переопределять '' ''вообще? Локальный каталог сначала по какой-то причине. –

+0

@MartijnPieters: Ну, [anaconda] (http://docs.continuum.io/) обеспечивает более быстрое число в настраиваемом каталоге, но я не хочу использовать все время. Поэтому я пишу команду оболочки, которая переключает вещи из системного python и libs на python и libs anaconda. – Adobe

+0

И как текущее поведение мешает вам это сделать? 'numpy' не установлен в текущем каталоге, не так ли? (Обратите внимание, что первая запись 'sys.path' всегда является каталогом запускаемого сценария). –

ответ

1

Для меня работает:

$PYTHONPATH="/home/farhad" python -c 'import sys; print sys.path[:2]' 
['', '/home/farhad'] 
$ 
+0

OP не хочет, чтобы он был указан вторым, но * первым *, поэтому перед записью '' '' (script directory). –

+0

Хорошо, почему голос? – Farhadix

+0

Потому что ответ не помогает. OP явно описал, что такое неправильные и правильные результаты, и вы дали OP то, что уже было признано нежелательным. –

1

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

+0

Да. Проблема с вашим путем заключается в том, что мне нужна не только numpy, но и некоторые другие libs (scipy, sympy, matplotlib) и т. Д. Я могу сделать пару 'usercustomize.py' там и swich между ними с помощью функции оболочки (переименование одного из них в 'usercustomize.py ~' interchangebly). Я действительно сделал это, но теперь надеюсь на лучшее решение. – Adobe

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