Автоматично імпортувати модулі при введенні інтерпретатора python або ipython


120

Мені здається, що я друкую import numpy as npмайже кожного разу, коли запускаю інтерпретатора пітона. Як встановити інтерпретатор python чи ipython, щоб numpy автоматично імпортувався?

Відповіді:


71

Використовуйте змінну середовища PYTHONSTARTUP . З офіційної документації:

Якщо це ім'я читабельного файлу, команди Python у цьому файлі виконуються до того, як в інтерактивному режимі відобразиться перша підказка. Файл виконується в тому ж просторі імен, де виконуються інтерактивні команди, щоб об'єкти, визначені або імпортовані в нього, можна було без кваліфікації використовувати в інтерактивному сеансі.

Отже, просто створіть сценарій python із заявою імпорту та вкажіть на нього змінну середовища. Сказавши це, пам’ятайте, що «явне завжди краще, ніж неявне», тому не покладайтеся на таку поведінку для виробничих сценаріїв.

Для Ipython дивіться цей підручник про те, як зробити файл ipython_config


@mklauber, дякую, але прийняте рішення там застаріле. Однак це надихнуло мою редакцію. @ OP: Дивіться мою відредаговану відповідь
Дхара

3
@ user545424 з цього письма (ipython 1.1.0) також підтримує PYTHONSTARTUP.
pflaquerre

Налаштування env PYTHONSTARTUP="~/.startup.py"для мене не
вийшло

Просто примітка export PYTHONSTARTUP=~/.python_shell_startup.pyдля встановлення змінної.
PallavBakshi

78

Для ipython є два способи досягти цього. Обидва містять каталог конфігурації ipython, який знаходиться в ~/.ipython.

  1. Створіть спеціальний профіль ipython.
  2. Або ви можете додати файл запуску до ~/.ipython/profile_default/startup/

Для простоти я б скористався варіантом 2. Все, що вам потрібно зробити, це помістити файл .pyабо .ipyфайл у ~/.ipython/profile_default/startupкаталог, і він буде автоматично виконаний. Таким чином, ви можете просто розмістити import numpy as npв простому файлі, і ви матимете np у просторі імен вашого ipython-підказки.

Варіант 2 фактично буде працювати зі спеціальним профілем, але використання спеціального профілю дозволить змінити вимоги до запуску та іншу конфігурацію залежно від конкретного випадку. Однак якщо ви завжди хотіли npб бути вам доступними, тоді, будь-ласка, помістіть його в каталог запуску.

Для отримання додаткової інформації про конфігурацію ipython. У документах мають набагато більш повне пояснення.


2
В Ubuntu 14.04 каталог насправді такий: ~/.config/ipython/profile_default/startup/а ні~/.ipython/profile_default/startup/
Петро

1
На жаль, варіант 2 вище не дозволяє завершити вкладку.
користувач1717828

21

Я використовую файл ~ / .startup.py таким чином:

# Ned's .startup.py file
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")

pp = pprint.pprint

Потім визначте PYTHONSTARTUP = ~ / .startup.py, і Python буде використовувати його під час запуску оболонки.

Виписки щодо друку існують, тому коли я запускаю оболонку, я отримую нагадування про те, що він діє, і що вже імпортується. ppЯрлик дійсно дуже зручно ...


Не працював для мене в Linux. Чи потрібно мені сказати Python шукати в моєму домашньому каталозі чи щось таке?
Seanny123

oops: забув важливий крок: я додав його: визначте PYTHONSTARTUP
Ned Batchelder

Я ніколи не знаю, коли ~заміна для $HOMEроботи чи ні, але замість цього відносного шляху мені довелося використовувати абсолютний шлях на MacOS, fish та python3.
rien333

@Ned Batchelder, велике спасибі, це те, що я шукав. бічне питання, я використовую це на Windows і pp ярлик не працює. Чи можете ви порадити? >>> pp <функція pprint на 0x0000020DAF90C8C8> >>> pp () Відстеження (останній останній виклик): Файл "<stdin>", рядок 1, в <module> TypeError: pprint () відсутній 1 необхідний позиційний аргумент: 'object' >>>
Forever Learner

5

При створенні сценарію призначеного для користувача запуску , як ravenac95 пропонує найкращий загальний відповідь в більшості випадків, це не буде працювати в тих випадках , коли ви хочете використовувати from __future__ import X. Якщо ви іноді працюєте в Python 2.x, але хочете скористатися сучасним підрозділом, для цього є лише один спосіб. Створивши профіль, відредагуйте profile_default(для Ubuntu цей розміщений в ~/.ipython/profile_default) та додайте до кінця щось на зразок наступного:

c.InteractiveShellApp.exec_lines = [
    'from __future__ import division, print_function',
    'import numpy as np',
    'import matplotlib.pyplot as plt',
    ]

3

Як простіша альтернатива прийнятій відповіді, в Linux:

просто визначте псевдонім, наприклад, помістіть alias pynp='python -i -c"import numpy as np"'у файл ~ / .bash_aliases файл. Потім можна викликати python + numpy за допомогою pynp, а ви все одно можете використовувати просто python python. Поведінка сценаріїв Python залишається недоторканою.


PYTHONSTARTUPвикликається лише в інтерактивному режимі, тому поведінка сценаріїв пітона залишається недоторканою в будь-якому випадку. Псевдонім також можна створити із посиланням на файл:alias pynp='PYTHONSTARTUP="~/.startup.py" python'
F.Raab

2

Ви можете створити звичайний сценарій python як import_numpy.pyбудь-що або що завгодно

#!/bin/env python3
import numpy as np

потім запустіть його -iпрапором.

python -i import_numpy.py

Такий спосіб дасть вам можливість вибору лише потрібних модулів для різних проектів.


1

Як згадується у його відповіді ravenac95 , ви можете або створити спеціальний профіль, або змінити профіль за замовчуванням. Ця відповідь - це швидкий перегляд команд Linux, необхідних для автоматичного використання.import numpy as np

Якщо ви хочете використовувати спеціальний профіль, який називається numpy, запустіть:

ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy

Або якщо ви хочете змінити профіль за замовчуванням, щоб завжди імпортувати нуме:

echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython

Перегляньте посібник з конфігурації IPython, щоб детальніше ознайомитися з налаштуванням профілів. Дивіться, .ipython/profile_default/startup/READMEщоб зрозуміти, як працює каталог запуску.


1

Моє ipythonвиклик за замовчуванням -

ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False

--pylabє ipythonваріантом вже деякий час. Він імпортує numpyта (частини) matplotlib. Я додав --Inter...варіант, щоб він не використовував *імпорт, оскільки я вважаю за краще використовувати явний np.....

Це може бути ярлик, псевдонім або сценарій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.