Можно ли запустить скрипт python (не модуль) из ipython, не указывая его путь? Я пытался установить PYTHONPATH, но, похоже, он работает только для модулей. Я хотел бы выполнить
%run my_script.py
не находясь в каталоге, содержащем файл.
Можно ли запустить скрипт python (не модуль) из ipython, не указывая его путь? Я пытался установить PYTHONPATH, но, похоже, он работает только для модулей. Я хотел бы выполнить
%run my_script.py
не находясь в каталоге, содержащем файл.
Ответы:
из каталога "my_script.py" вы можете просто сделать:
%run ./my_script.py
SyntaxError: invalid syntaxздесь, на консоли Python . Python 3.5.3 на Debian 9. Однако работает на IPython.
%runэто волшебная команда ipython, а не часть самого языка Python.
У %runмагии есть параметр, file_finderкоторый он использует для получения полного пути к исполняемому файлу (см. Здесь ); как вы заметили, он просто просматривает текущий каталог, при необходимости добавляя «.py».
Кажется, не существует способа указать, какой искатель файлов использовать с помощью %runмагии, но ничто не мешает вам определить свою собственную волшебную команду, вызываемую %runс помощью соответствующего искателя файлов.
Как очень неприятный прием, вы можете заменить значение по умолчанию file_finderсвоим:
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
Честно говоря, при изменении IPython API он будет работать так же, как и определение вашей собственной магии.
В Python нет разницы между модулями и скриптами; Вы можете выполнять как скрипты, так и модули. Файл должен находиться на пути pythonpath AFAIK, потому что python должен иметь возможность найти рассматриваемый файл. Если python выполняется из каталога, этот каталог автоматически добавляется в путь к python.
См. Раздел Как лучше всего вызвать сценарий Python из другого сценария Python? для получения дополнительной информации о модулях и скриптах
Также есть встроенная функция execfile (filename), которая будет делать то, что вы хотите
__name__== ' __main__':» в конце
для Python 3.6.5
import os
os.getcwd()
runfile('testing.py')
runfile()команда ipython? У меня не работает "из коробки".
import <module>по сути такой же, какexec(<moduleSource>)в JavaScript или Perl.