Можно ли запустить скрипт python (не модуль) из ipython, не указывая его путь? Я пытался установить PYTHONPATH, но, похоже, он работает только для модулей. Я хотел бы выполнить
import <module>по сути такой же, как exec(<moduleSource>)в JavaScript или Perl.
Vortico
14
+1 для синтаксиса% run abc.py - пытался это найти
Сид Кшатрия
1
вы можете использовать путь:% run ../scripts/my_scripts, например
Jose A. Martín
для скриптов CLI, разработанных с помощью библиотеки Click, у меня это не работает, я получаю: IOErrorTraceback (последний вызов последним) /home/miguelfg/workspace/projects*********/db_preparation.py в <module > () 1270 1271 if name == " main ": -> 1272 main () 1273 1274 ...
miguelfg
Ответы:
126
из каталога "my_script.py" вы можете просто сделать:
У %runмагии есть параметр, file_finderкоторый он использует для получения полного пути к исполняемому файлу (см. Здесь ); как вы заметили, он просто просматривает текущий каталог, при необходимости добавляя «.py».
Кажется, не существует способа указать, какой искатель файлов использовать с помощью %runмагии, но ничто не мешает вам определить свою собственную волшебную команду, вызываемую %runс помощью соответствующего искателя файлов.
Как очень неприятный прием, вы можете заменить значение по умолчанию file_finderсвоим:
В Python нет разницы между модулями и скриптами; Вы можете выполнять как скрипты, так и модули. Файл должен находиться на пути pythonpath AFAIK, потому что python должен иметь возможность найти рассматриваемый файл. Если python выполняется из каталога, этот каталог автоматически добавляется в путь к python.
Я тоже так думал. Однако на практике модули могут быть импортированы, но скрипты не будут найдены интерпретатором, если они не будут запущены из каталога, к которому они принадлежат.
Tyler Durden
1
Прочтите docs.python.org/tutorial/modules.html#the-module-search-path для получения дополнительной информации. В нем подробно описано, где он должен быть помещен для python, чтобы найти файл. В частности, многие модули могут дублироваться как сценарии, используя строку «if __name__== ' __main__':» в конце
import <module>
по сути такой же, какexec(<moduleSource>)
в JavaScript или Perl.Ответы:
из каталога "my_script.py" вы можете просто сделать:
источник
SyntaxError: invalid syntax
здесь, на консоли Python . Python 3.5.3 на Debian 9. Однако работает на IPython.%run
это волшебная команда ipython, а не часть самого языка Python.Как запустить скрипт в Ipython
Это должно сработать
источник
У
%run
магии есть параметр,file_finder
который он использует для получения полного пути к исполняемому файлу (см. Здесь ); как вы заметили, он просто просматривает текущий каталог, при необходимости добавляя «.py».Кажется, не существует способа указать, какой искатель файлов использовать с помощью
%run
магии, но ничто не мешает вам определить свою собственную волшебную команду, вызываемую%run
с помощью соответствующего искателя файлов.Как очень неприятный прием, вы можете заменить значение по умолчанию
file_finder
своим:Честно говоря, при изменении IPython API он будет работать так же, как и определение вашей собственной магии.
источник
В Python нет разницы между модулями и скриптами; Вы можете выполнять как скрипты, так и модули. Файл должен находиться на пути pythonpath AFAIK, потому что python должен иметь возможность найти рассматриваемый файл. Если python выполняется из каталога, этот каталог автоматически добавляется в путь к python.
См. Раздел Как лучше всего вызвать сценарий Python из другого сценария Python? для получения дополнительной информации о модулях и скриптах
Также есть встроенная функция execfile (filename), которая будет делать то, что вы хотите
источник
__name__
== '__main__
':» в концедля Python 3.6.5
источник
runfile()
командаipython
? У меня не работает "из коробки".