Как запустить скрипт python из терминала с помощью одной команды [duplicate]

Вы говорите LINQ к объектам или LINQ to SQL?

Для LINQ для объектов вам придётся прибегать к регулярным выражениям , которые я думаю.

35
задан Martin08 14 February 2011 в 15:57
поделиться

5 ответов

Вы должны добавить shebang:

  #! / usr / bin / env python  

Затем сделать скрипт исполняемым:

  chmod + x foo  

Затем вы можете запускать его, как и любой другой исполняемый файл:

  ./ foo   

И примечание от Homer6: если вы редактируете файл из окон и вызывают его на linux, вы можете столкнуться с загадочной ошибкой «Нет такого файла или каталога». Это связано с тем, что строки строк являются CRLF вместо LF. Если вы конвертируете их в LF, скрипт будет выполняться так, как ожидалось. Notepad ++> View> Показать символы> Показать конец строки, чтобы показать символы EOL. И Notepad ++> Edit> EOL Conversion> Unix Format для преобразования всех строк в LF. В качестве альтернативы вы можете использовать инструмент dos2unix ( dos2unix foo.py ), который присутствует на большинстве Linux-систем.

94
ответ дан David Wolever 16 August 2018 в 07:55
поделиться
  • 1
    В качестве примечания: лучше использовать / usr / bin / env , чем путь к Python в строке shebang: если вы жестко закодируете путь, скрипт перестанет работать, если Python когда-либо перемещается ... Но пока Python находится на $ PATH , / usr / bin / env будет работать. – David Wolever 14 February 2011 в 16:05
  • 2
    Ну, строго говоря, env можно было бы найти и в другом месте. Но да, это гораздо менее возможно, чем запуск сценария на другом дистрибутиве, который, как оказалось, помещает python в другое место. – user 14 February 2011 в 17:29
  • 3
    Это правда. Но я не знаю другого, более портативного, способа сделать это. – David Wolever 14 February 2011 в 18:10
  • 4
    Еще одно замечание: если вы редактируете файл из окон и вызывают его на Linux, вы можете столкнуться с загадочным «нет такого файла или каталога», ошибка. Это связано с тем, что строки строк являются CRLF вместо LF. Если вы конвертируете их в LF, скрипт будет выполняться так, как ожидалось. Блокнот ++ & gt; Просмотр & gt; Показать символы & gt; Показать конец строки, чтобы показать символы EOL. И Notepad ++ & gt; Изменить & gt; EOL Conversion & gt; Unix Format, чтобы преобразовать все окончания строк для использования LF. – Homer6 13 November 2012 в 20:35
  • 5
    На gvim для windows я думаю, : set ff = unix , а затем сохранит исправления этой проблемы. – KitsuneYMG 12 June 2013 в 16:55
  1. Добавьте строку вверху вашего скрипта: #! / usr / bin / env python
  2. Переименуйте свой скрипт из script_name.py в имя_файла
  3. сделать script: chmod + x script_name

Строка вверх выбирает тот же python , который вы получаете при вводе python в строке запроса , Вы также можете указать прямой путь:

  #! / Opt / python / 3.6 / bin / python  
3
ответ дан Anthon 16 August 2018 в 07:55
поделиться
  • 1
    Кроме того, вам нужно добавить расположение сценария в переменную PATH. в противном случае вам нужно будет выполнить его как ./script_name – Joe 11 September 2016 в 07:39

Убедитесь, что вы можете запускать / path / to / python на своем терминале. И убедитесь, что вы предоставили разрешение на выполнение для вашего файла python. Вы можете дать разрешение на файл с помощью

  chmod + x mypythonfile.py  
1
ответ дан darioo 16 August 2018 в 07:55
поделиться
  • 1
    chmode был опечаткой, поэтому я исправил его. – darioo 14 February 2011 в 16:04
  • 2
    это немного поздно, но где я могу поместить команду chmod ... в командной строке? благодаря – lucyb 7 February 2017 в 20:08

Это действительно не относится к вашим личным скриптам, но поскольку вы цитируете beets , обратите внимание, что также можно автоматизировать это действие, когда вы распространяете свои пакеты, благодаря setuptools entry_point . Поэтому, если вы распространяете пакет, такой как myModule , и хотите, чтобы функция main_function () была доступна, набрав mymodulescript в консоли, вы, вероятно, добавили бы что-то вроде этого в файле setup.py :

  setup (# ваши другие аргументы .. entry_points = {'console_scripts': ['mymodulescript = myModule: main_function'  ]})  
3
ответ дан mgc 16 August 2018 в 07:55
поделиться

Другим обходным решением может быть использование псевдонима, определенного в .bashrc:

, например. добавьте следующую строку в файл .bachrc:

  alias mypythonalias = "python mypyrhonfile.py"  

введите в терминал:

  source ~ / .bashrc  

, а затем вы можете просто ввести:

  mypythonalias  

to выполнить файл python.

0
ответ дан Tassos Pan 16 August 2018 в 07:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: