Piszę import numpy as np
prawie za każdym razem, gdy uruchamiam interpreter Pythona. Jak skonfigurować interpreter języka Python lub ipython, aby numpy był automatycznie importowany?
Piszę import numpy as np
prawie za każdym razem, gdy uruchamiam interpreter Pythona. Jak skonfigurować interpreter języka Python lub ipython, aby numpy był automatycznie importowany?
Odpowiedzi:
Użyj zmiennej środowiskowej PYTHONSTARTUP . Z oficjalnej dokumentacji:
Jeśli jest to nazwa czytelnego pliku, polecenia Pythona w tym pliku są wykonywane przed wyświetleniem pierwszej zachęty w trybie interaktywnym. Plik jest wykonywany w tej samej przestrzeni nazw, w której wykonywane są polecenia interaktywne, dzięki czemu obiekty zdefiniowane lub importowane w nim mogą być używane bez kwalifikacji w sesji interaktywnej.
Po prostu utwórz skrypt w języku Python z instrukcją import i wskaż zmienną środowiskową. Powiedziawszy to, pamiętaj, że „Wyraźne jest zawsze lepsze niż ukryte”, więc nie polegaj na tym zachowaniu w skryptach produkcyjnych.
W przypadku Ipython, zobacz ten samouczek dotyczący tworzenia pliku ipython_config
env PYTHONSTARTUP="~/.startup.py"
nie działało dla mnie
export PYTHONSTARTUP=~/.python_shell_startup.py
aby ustawić zmienną.
W przypadku ipython są na to dwa sposoby. Oba dotyczą katalogu konfiguracyjnego ipython, który znajduje się w ~/.ipython
.
~/.ipython/profile_default/startup/
Dla uproszczenia użyłbym opcji 2. Wszystko, co musisz zrobić, to umieścić plik .py
lub .ipy
w ~/.ipython/profile_default/startup
katalogu, a zostanie on automatycznie wykonany. Więc możesz po prostu umieścić import numpy as np
w prostym pliku i będziesz mieć np w przestrzeni nazw swojego znaku zachęty ipython.
Opcja 2 będzie faktycznie działać z niestandardowym profilem, ale użycie niestandardowego profilu pozwoli ci zmienić wymagania uruchamiania i inną konfigurację w zależności od konkretnego przypadku. Jeśli jednak chcesz być zawszenp
dla Ciebie dostępny, umieść go w katalogu startowym.
Więcej informacji o konfiguracji ipython. W docs mają znacznie bardziej kompletne wyjaśnienie.
~/.config/ipython/profile_default/startup/
a nie~/.ipython/profile_default/startup/
Używam pliku ~ / .startup.py w następujący sposób:
# 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
Następnie zdefiniuj PYTHONSTARTUP = ~ / .startup.py, a Python użyje go podczas uruchamiania powłoki.
Są tam instrukcje print, więc kiedy uruchamiam powłokę, otrzymuję przypomnienie, że działa i co zostało już zaimportowane. pp
Skrót jest naprawdę poręczny zbyt ...
~
jako substytut $HOME
działa, czy nie, ale zamiast tej względnej ścieżki musiałem użyć ścieżki absolutnej na MacOS, fish i python3.
Tworząc niestandardowy skrypt startowy jak ravenac95 sugeruje jest najlepszy ogólny odpowiedź w większości przypadków, to nie będzie działać w sytuacji, gdy chcesz użyć from __future__ import X
. Jeśli czasami pracujesz w Pythonie 2.x, ale chcesz użyć nowoczesnego podziału, jest tylko jeden sposób, aby to zrobić. Po utworzeniu profilu edytuj profile_default
(w przypadku Ubuntu, w którym znajduje się ~/.ipython/profile_default
) i dodaj coś takiego na dole:
c.InteractiveShellApp.exec_lines = [
'from __future__ import division, print_function',
'import numpy as np',
'import matplotlib.pyplot as plt',
]
Jako prostsza alternatywa dla zaakceptowanej odpowiedzi, w systemie Linux:
wystarczy zdefiniować alias, np. umieścić alias pynp='python -i -c"import numpy as np"'
w swoim pliku ~ / .bash_aliases. Następnie możesz wywołać python + numpy za pomocą pynp
i nadal możesz używać tylko pythona z python
. Zachowanie skryptów Pythona pozostaje nietknięte.
PYTHONSTARTUP
jest wywoływana tylko w trybie interaktywnym , więc zachowanie skryptów Pythona i tak pozostaje nietknięte. Można również utworzyć alias z odniesieniem do pliku:alias pynp='PYTHONSTARTUP="~/.startup.py" python'
Jak ravenac95 wspomniał w swojej odpowiedzi , możesz utworzyć profil niestandardowy lub zmodyfikować profil domyślny. Ta odpowiedź to szybki przegląd poleceń Linuksa potrzebnych do import numpy as np
automatycznego.
Jeśli chcesz użyć niestandardowego profilu o nazwie numpy
, uruchom:
ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy
Lub jeśli chcesz zmodyfikować domyślny profil, aby zawsze importować numpy:
echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython
Sprawdź samouczek konfiguracji IPython aby dowiedzieć się więcej o konfigurowaniu profili. Zobacz, .ipython/profile_default/startup/README
aby zrozumieć, jak działa katalog startowy.
Moje domyślne ipython
wywołanie to
ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False
--pylab
od ipython
jakiegoś czasu. Importuje numpy
i (części) matplotlib
. Dodałem --Inter...
opcję, więc nie używa *
importu, ponieważ wolę używać jawnegonp....
.
Może to być skrót, alias lub skrypt.