Как да изпратите Python скрипт на IPython или да стартирате Python скрипт в IPython, без да импортирате numpy

Имам файл на python, който съдържа скриптове, използващи функции numpy.

Мислех, че IPython вече има зареден numpy, така че не импортирах numpy във файла, когато го направя:

%run my_python_file.py 

Не успява поради неизвестните функции от numpy.

И така, въпросът ми е следният:

Има ли начин да стартирате скриптовете във файл на Python с модулите, които вече са импортирани от IPython?

Благодаря много!


person shelper    schedule 20.08.2012    source източник


Отговори (3)


Ако сте в интерактивната обвивка numpy -pylab, използвайте

run -i script.py

за това, което питаш. Има страничен ефект от запазване (или презаписване) на всички глобални променливи във вашия скрипт на Python. По принцип ipython действа така, сякаш сте въвели файла на ръка.

Може би най-полезната причина да направите това е, че можете също да препращате към други променливи, създадени в сесията на ipython, например да ги променяте на ръка между изпълненията на скрипта.

За тривиален пример, ако script.py е

AA = np.array([[1,2],[3, myVar]])
print AA

тогава в ipython бихте могли

In [1]: myVar = 7
In [2]: run -i script.py
[[1 2]
 [3 7]]
In [3]: myVar = 17
In [4]: run -i script.py
[[ 1  2]
 [ 3 17]]
In [5]: 
person daemacles    schedule 20.08.2012

Е, ако ви разбирам правилно, ако приемем, че работите с Linux, можете да направите нещо подобно:

#!/usr/bin/ipython --pylab=tk
print(numpy.sin(0.5))

Линията с #! указва на скрипта каква програма (и опции) да използва, за да го стартира, а редът numpy е само пример, за да ви покаже, че работи. Може да се наложи да замените tk с Qt4 или нещо подобно.

След това ще трябва да изпълните командата chmod +x (ако приемем, че сте на unix машина) на този файл, за да го направите изпълним и да го изпълните.

Истинският въпрос е защо просто не импортирате numpy във вашия скрипт? Ако обясните, че може би можем да ви помогнем да намерите най-доброто решение на вашия проблем.

person Mike Vella    schedule 20.08.2012
comment
Или можете да напишете своя скрипт в my_script.py, да стартирате ipython --pylab=tk и след това да въведете from my_script import *. - person behnam; 21.08.2012
comment
За да бъда напълно честен обаче, все още не съм напълно сигурен, че разбирам какъв е въпросът. Мислите ли, че можете да го перифразирате? - person Mike Vella; 21.08.2012
comment
съжалявам, мисля, че първият отговор решава проблема ми, но така или иначе актуализирах въпроса... - person shelper; 21.08.2012

%import numpy
%run my_python_file.py 

или не съм разбрал въпроса ви.

person Davoud Taghawi-Nejad    schedule 21.08.2012