Czy można uruchomić skrypt Pythona (nie moduł) z wnętrza ipythona bez wskazywania jego ścieżki? Próbowałem ustawić PYTHONPATH, ale wygląda na to, że działa tylko dla modułów. Chciałbym wykonać
%run my_script.py
bez znajdowania się w katalogu zawierającym plik.
import <module>
jest zasadniczo taka sama jakexec(<moduleSource>)
w JavaScript lub Perl.Odpowiedzi:
z katalogu „my_script.py” możesz po prostu wykonać:
źródło
SyntaxError: invalid syntax
tutaj, na konsoli Pythona . Python 3.5.3 na Debianie 9. Jednak działa na IPythonie.%run
jest to magiczne polecenie ipython, a nie część samego języka Python.Jak uruchomić skrypt w Ipythonie
Że należy to zrobić
źródło
%run
Magia ma parametrfile_finder
, że używa, aby uzyskać pełną ścieżkę do pliku, który ma wykonać (patrz tutaj ); jak zauważyłeś, po prostu przegląda bieżący katalog, dodając „.py”, jeśli to konieczne.Nie wydaje się być sposób, aby określić, który plik Finder do użytku z tej
%run
magii, ale nie ma nic, aby zatrzymać cię od zdefiniowania własnego polecenia magiczną że stawia pod%run
odpowiednim File Finder.Jako bardzo paskudny hack, możesz zastąpić domyślne
file_finder
ustawienie własnym:Szczerze mówiąc, w tempie, w jakim zmienia się interfejs API IPython, prawdopodobnie będzie ono nadal działać, podobnie jak definiowanie własnej magii.
źródło
W Pythonie nie ma różnicy między modułami a skryptami; Możesz wykonywać zarówno skrypty, jak i moduły. Plik musi znajdować się w pythonpath AFAIK, ponieważ python musi być w stanie znaleźć ten plik. Jeśli python jest wykonywany z katalogu, katalog ten jest automatycznie dodawany do pythonpath.
Zobacz Jaki jest najlepszy sposób wywołania skryptu w języku Python z innego skryptu w języku Python? aby uzyskać więcej informacji na temat modułów i skryptów
Istnieje również wbudowana funkcja execfile (nazwa pliku), która zrobi to, co chcesz
źródło
__name__
==__main__
':" na końcudla Pythona 3.6.5
źródło
runfile()
rozkazipython
? Nie działa dla mnie po wyjęciu z pudełka.