Ipython имеет разные sys.path, чем python, и не использует PYTHONPATH?

Кажется, что IPython не учитывает мой PYTHONPATH, в то время как обычный интерпретатор python делает это. Я на windows 7.

My PYTHONPATH: C:\рабочее место\питон; C:\python27\Lib\сайт-пакеты\spyderlib; C:\Workspace\Python\awesim\awesim

Печать sys.path:

import sys
for i in sorted(sys.path):
 print i

Здесь я получаю в IPython:

C:\JModelica.org-1,8\Python C:\python27 C:\python27\DLL, C:\python27\Lib C:\python27\Lib\Lib-тк C:\python27\Lib\наличник выигрыша C:\python27\Lib\сайт-пакеты C:\python27\Lib\сайт-пакеты\PIL C:\python27\Lib\сайт-пакеты\Pythonwin C:\python27\Lib\сайт-пакеты\IPython-0,13-py2.7.egg C:\python27\Lib\сайт-пакеты\IPython-0,13-py2.7.egg\IPython\расширений C:\python27\Lib\сайт-пакеты\NumPy-1.6.2-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\openpyxl-1.5.8-py2.7.egg C:\python27\Lib\сайт-пакеты\pandas -0.8.1-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\pyzmq-2.2.0.1-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\Setuptools-0.6c11-py2.7.egg-инфо C:\python27\Lib\сайт-пакеты\сфинкс-1.1.3-py2.7.egg C:\python27\Lib\сайт-пакеты\statsmodels-0.4.0-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\Торнадо-2,3-py2.7.egg C:\python27\Lib\сайт-пакеты\win32 C:\python27\Lib\сайт-пакеты\win32\Lib C:\python27\Lib\сайт-пакеты\WX-2,8-ММЗ-юникода C:\python27\скрипты C:\Windows\system32\python27.zip

И то же самое в консоли python:

C:\python27 C:\python27\DLL, C:\python27\Lib\сайт-пакеты\spyderlib C:\python27\Lib C:\python27\Lib\Lib-тк C:\python27\Lib\наличник выигрыша C:\python27\Lib\сайт-пакеты C:\python27\Lib\сайт-пакеты\PIL C:\python27\Lib\сайт-пакеты\Pythonwin C:\python27\Lib\сайт-пакеты\IPython-0,13-py2.7.egg C:\python27\Lib\сайт-пакеты\NumPy-1.6.2-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\openpyxl-1.5.8-py2.7.egg C:\python27\Lib\сайт-пакеты\pandas -0.8.1-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\pyzmq-2.2.0.1-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\Setuptools-0.6c11-py2.7.egg-инфо C:\python27\Lib\сайт-пакеты\сфинкс-1.1.3-py2.7.egg C:\python27\Lib\сайт-пакеты\statsmodels-0.4.0-py2.7-win32.egg C:\python27\Lib\сайт-пакеты\Торнадо-2,3-py2.7.egg C:\python27\Lib\сайт-пакеты\win32 C:\python27\Lib\сайт-пакеты\win32\Lib C:\python27\Lib\сайт-пакеты\WX-2,8-ММЗ-юникода C:\Workspace\Python\awesim\awesim C:\WINDOWS\system32\python27.zip C:\рабочего пространства\питон

Вы можете видеть, что обычная консоль python отражает PYTHONPATH, но выход IPython не работает.

Спасибо заранее за ваши подсказки.

3 ответа

Пусковые установки .exe, связанные с меню "Пуск", создаются установкой setuptools, и возможно, что они неправильно настроили вашу среду (я не знаю достаточно о средах Windows, чтобы сказать наверняка, или если это исправление).

Но если вы запустите IPython из командной строки, он определенно наследует вашу среду должным образом.


По-видимому, это происходит, когда sys.paths Python и IPython отличаются.

Для IPython некоторое быстрое временное решение будет:

import sys
sys.path.append('your paths')

Лично мне нравится помещать это в скрипты, над которыми я работаю, для включения моих модулей, которые организованы в каталог проекта, включая их подкаталоги. (PS. Не забывайте: sub-dirs включены в python в пути, если основной каталог и нужный субдир содержат файл (пустой) __init__.py.)

Постоянным решением будет создание нового профиля IPython:

ipython profile create
ipython locate
/Users/username/.ipython

перейдите в профиль ipython и отредактируйте: profile_default/ipython_config.py

Добавьте следующий

c.InteractiveShellApp.exec_lines = [
 'import sys; sys.path.append("you paths")'
 ]

Это работает на Linux, и я должен уметь работать с Windows.


Я просто решил аналогичную проблему для Linux, на котором запущен Python 2.6.

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

Это было исправлено, закрыв все программы python и выполнив:

virtualenv --system-site-packages ~

licensed under cc by-sa 3.0 with attribution.