Python veya ipython yorumlayıcısına girerken modülleri otomatik olarak içe aktarın


120

import numpy as npPython yorumlayıcısını çalıştırdığım neredeyse her seferde kendimi yazarken buluyorum . Numpy'nin otomatik olarak içe aktarılması için python veya ipython yorumlayıcısını nasıl kurarım?

Yanıtlar:


71

PYTHONSTARTUP ortam değişkenini kullanın . Resmi belgelerden:

Okunabilir bir dosyanın adı bu ise, o dosyadaki Python komutları etkileşimli modda ilk komut görüntülenmeden önce yürütülür. Dosya, etkileşimli komutların yürütüldüğü aynı ad alanında çalıştırılır, böylece içinde tanımlanan veya içe aktarılan nesneler etkileşimli oturumda nitelendirme olmadan kullanılabilir.

Bu nedenle, import deyimi ile bir python betiği oluşturun ve ortam değişkenini ona işaret edin. Bunu söyledikten sonra, 'Açık'ın her zaman örtük olmaktan iyidir' olduğunu unutmayın, bu nedenle üretim komut dosyaları için bu davranışa güvenmeyin.

Ipython için, bir ipython_config dosyasının nasıl yapılacağına ilişkin bu eğiticiye bakın


@mklauber, teşekkürler, ancak orada kabul edilen çözüm kullanımdan kaldırıldı. Ancak, düzenlememe ilham verdi. @ OP: Düzenlenmiş cevabımı görün
Dhara

3
@ user545424 bu yazı itibariyle (ipython 1.1.0) PYTHONSTARTUP'ı da desteklemektedir.
pflaquerre

Ayar env PYTHONSTARTUP="~/.startup.py"benim için işe yaramadı
Seanny123

export PYTHONSTARTUP=~/.python_shell_startup.pyDeğişkeni ayarlamak için sadece bir not .
PallavBakshi

78

İpython için bunu başarmanın iki yolu vardır. Her ikisi de ipython'un içinde bulunan yapılandırma dizinini içerir ~/.ipython.

  1. Özel bir ipython profili oluşturun.
  2. Veya bir başlangıç ​​dosyası ekleyebilirsiniz. ~/.ipython/profile_default/startup/

Basit olması için 2. seçeneği kullanırım. Tek yapmanız gereken dizine bir .pyveya .ipydosyası yerleştirmek ~/.ipython/profile_default/startupve otomatik olarak çalıştırılacaktır. Böylece import numpy as npbasit bir dosyada basit bir yer oluşturabilir ve ipython isteminizin ad alanında np'ye sahip olursunuz.

Seçenek 2 aslında özel bir profille çalışacaktır, ancak özel bir profil kullanmak, belirli bir duruma göre başlatma gereksinimlerini ve diğer yapılandırmayı değiştirmenize olanak tanır. Eğer olur Ancak, her zaman gibi nptüm araçları başlangıç dizine koyun tarafından daha sonra size sunulan olmaktır.

İpython yapılandırması hakkında daha fazla bilgi için. Dokümanlar çok daha eksiksiz bir açıklama yoktur.


2
Ubuntu 14.04'te dizin aslında: ~/.config/ipython/profile_default/startup/ve değil~/.ipython/profile_default/startup/
Peter

1
Maalesef yukarıdaki 2. seçenek, sekmenin tamamlanmasına izin vermiyor.
user1717828

21

Bunun gibi bir ~ / .startup.py dosyası kullanıyorum:

# 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

Ardından PYTHONSTARTUP = ~ / .startup.py tanımlayın ve Python bir kabuk başlatırken bunu kullanacaktır.

Print ifadeleri oradadır, bu yüzden kabuğu başlattığımda, bunun yürürlükte olduğunu ve zaten içe aktarılmış olan bir hatırlatma alıyorum. ppKısayol da gerçekten kullanışlı ...


Benim için Linux'ta çalışmadı. Python'a ana dizinime veya başka bir şeye bakmasını söylemem gerekiyor mu?
Seanny123

oops: önemli bir adımı unuttum: Ekledim: tanımla PYTHONSTARTUP
Ned Batchelder

Biliyorum asla zaman ~için bir yedek olarak $HOMEişlerin ya da değil, ama yerine bu göreceli yol Ben MacOS, balık ve python3 üzerinde mutlak bir yol kullanmak zorunda kaldı.
rien333

@Ned Batchelder, çok teşekkürler, aradığım buydu. yan soru, bunu pencerelerde kullanıyorum ve pp kısayolu çalışmıyor. Lütfen tavsiyede bulunabilir misiniz? >>> pp <function pprint at 0x0000020DAF90C8C8> >>> pp () Traceback (en son çağrı): Dosya "<stdin>", satır 1, <module> TypeError: pprint () eksik 1 gerekli konumsal argüman: 'nesne' >>>
Forever Learner

5

Gibi özel bir başlangıç komut dosyası oluştururken ravenac95 anlaşılacağı çoğu durum için en iyi genel yanıt olduğunu, bu size bir kullanmak istediğiniz durumlarda çalışma olmaz from __future__ import X. Bazen Python 2.x'te çalışıyorsanız ancak modern bölme kullanmak istiyorsanız, bunu yapmanın tek bir yolu vardır. Bir profil oluşturduktan sonra, profile_default(Ubuntu için bu konumdadır ~/.ipython/profile_default) düzenleyin ve aşağıya aşağıdaki gibi bir şey ekleyin:

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

3

Kabul edilen cevaba daha basit bir alternatif olarak, linux'ta:

sadece bir takma ad tanımlayın, örneğin alias pynp='python -i -c"import numpy as np"'~ / .bash_aliases dosyanıza koyun . Daha sonra python + numpy ile çalıştırabilirsiniz pynpve yine de sadece python kullanabilirsiniz python. Python betiklerinin davranışına dokunulmadan bırakılır.


PYTHONSTARTUPyalnızca etkileşimli modda çağrılır , bu nedenle python komut dosyalarının davranışına hiçbir şekilde dokunulmadan kalır. Bir dosya referansıyla bir takma ad da oluşturulabilir:alias pynp='PYTHONSTARTUP="~/.startup.py" python'
F.Raab

2

Normal bir python betiği import_numpy.pyveya istediğiniz herhangi bir şey oluşturabilirsiniz

#!/bin/env python3
import numpy as np

ardından -ibayrakla başlatın .

python -i import_numpy.py

Bunun gibi, size yalnızca farklı projeler için istediğiniz modülleri seçme esnekliği sağlayacaktır.


1

Gibi ravenac95 onun sözü cevap , ya özel bir profil oluşturmak veya varsayılan profili değiştirebilir. Bu cevap, import numpy as npotomatik olarak ihtiyaç duyulan Linux komutlarının hızlı bir görünümüdür .

Adlı özel bir profil kullanmak istiyorsanız numpy, şunu çalıştırın:

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

Ya da varsayılan profili her zaman numpy içe aktaracak şekilde değiştirmek isterseniz:

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

Profilleri yapılandırma hakkında daha fazla bilgi edinmek için IPython yapılandırma eğitimine göz atın . .ipython/profile_default/startup/READMEBaşlangıç ​​dizininin nasıl çalıştığını anlamak için bakın .


1

Varsayılan ipythonçağrım

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

--pylabbir süredir bir ipythonseçenek olmuştur . İthal eder numpyve (kısımlarını) matplotlib. Açık olanı kullanmayı tercih ettiğimden içe aktarmayı --Inter...kullanmaması için seçeneği ekledim .*np....

Bu bir kısayol, takma ad veya komut dosyası olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.