Python script executable in linux

How do I make a python script executable?

See also: python — setup.py and adding file to /bin/ — Stack Overflow for detailed instruction on the setuptools console_scripts method.

5 Answers 5

  1. Add a shebang line to the top of the script: #!/usr/bin/env python
  2. Mark the script as executable: chmod +x myscript.py
  3. Add the dir containing it to your PATH variable. (If you want it to stick, you’ll have to do this in .bashrc or .bash_profile in your home dir.) export PATH=/path/to/script:$PATH

It is: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/Development/adt-bundle/sdk/platform-tools:/Development/adt-bundle/sdk/tools

The best way, which is cross-platform, is to create setup.py , define an entry point in it and install with pip .

Say you have the following contents of myscript.py :

Then you add setup.py with the following:

from setuptools import setup setup( name='myscript', version='0.0.1', entry_points= < 'console_scripts': [ 'myscript=myscript:run' ] >) 

Entry point format is terminal_command_name=python_script_name:main_method_name

Finally install with the following command.

pip install -e /path/to/script/folder 

-e stands for editable, meaning you’ll be able to work on the script and invoke the latest version without need to reinstall

After that you can run myscript from any directory.

@NikitaProkaiev In myscript update , update is a command line argument to the script — the same as if you ran python myscript.py update . It would have no effect unless you wrote code in your script to handle command line arguments. You could define another entry in console_scripts like myscript_update=myscript:update to call, in this case, a function called update .

I usually do in the script:

$: chmod 755 yourfile.py $: ./yourfile.py 

permission table

Another related solution which some people may be interested in. One can also directly embed the contents of myscript.py into your .bashrc file on Linux (should also work for MacOS I think)

For example, I have the following function defined in my .bashrc for dumping Python pickles to the terminal, note that the $ is the first argument following the function name:

depickle() < python ', 'rb') while True: try: print(pickle.load(f)) except EOFError: break EOPYTHON > 

With this in place (and after reloading .bashrc), I can now run depickle a.pickle from any terminal or directory on my computer.

Источник

Запуск python скрипта в Linux

Python — очень популярный язык программирования для написания различных системных скриптов в Linux. В Windows, там где не хватает возможностей командной оболочки используется PowerShell. В Linux же, когда возможностей Bash не хватает используется язык Python.

На этом языке написано огромное количество системных программ, среди них пакетный менеджер apt, видеоредактор OpenShot, а также множество скриптов, которые вы можете установить с помощью утилиты pip. В этой небольшой статье мы рассмотрим как запустить Python скрипт в Linux с помощью терминала различными способами.

Читайте также:  Адрес локальной сети линукс

Запуск python скрипта в Linux

Для примера нам понадобится Python скрипт. Чтобы не брать какой-либо из существующих скриптов, давайте напишем свой:

Для того чтобы запустить скрипт необходимо передать его интерпретатору Python. Для этого просто откройте терминал с помощью сочетания клавиш Ctrl + Alt + T, перейдите в папку со скриптом и выполните:

Если вы хотите, чтобы после выполнения скрипта открылась консоль, в которой можно интерактивно выполнять команды языка Python используйте опцию -i:

Но как вы могли заметить, при запуске apt или openshot не надо писать слово python. Это намного удобнее. Давайте разберемся как это реализовать. Если вы не хотите указывать интерпретатор в командной строке, его надо указать в самом скрипте. Для этого следует в начало скрипта добавить такую строчку:

Сохраните изменения, а затем сделайте файл скрипта исполняемым с помощью такой команды:

После этого можно запустить скрипт Python просто обращаясь к его файлу:

Если убрать расширение .py и переместить скрипт в каталог, находящийся в переменной PATH, например /usr/bin/, то его можно будет выполнять вот так:

Как видите, запуск команды python Linux выполняется довольно просто и для этого даже есть несколько способов. А каким способом пользуетесь вы? Напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Похожие записи

Оцените статью

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

10 комментариев к “Запуск python скрипта в Linux”

В python не ставится точка с запятой после операторов. Ещё в большинстве дистрибутивов установлены две версии python, 2.7 и 3. Команда python script.py запустит скрипт в версии python 2.7, комнада
python3 script.py в верси 3 Ответить

Привет.
А можно кто-то написать скрипт чтобы автоматизировать подключение к VPN?
Сейчас мне надо в терминале выполнять команды:
cd Folder/Folder
—config file.ovpn
Потом в терминале запрашивается имя пользователя. После успешного ввода запрашивается пароль.
Пока мне не удалось найти решение чтобы запуском скрипта вводились команды, а потом логин и пароль.
Может кто-то подскажет?
Использую Линукс (Федору) 3й день. До этого не сталкивался )
Спасибо. Ответить

Часто используют виртуальные окружения, которые пользователь создает под своим акаунтом.
В этом окружении устанавливаются необходимая версия python (может отличаться от общесистемной) и модули. Когда нужно запустить такой скрипт, в самом начале (указатель на интерпретатор) пишется примерно так:
#!/home//.virtualenvs//bin/python3
что как мне кажется неудобно, особенно если нужно поделиться скриптом с кем-то еще по команде. Поделитесь более интересными способами запуска .py скриптов из виртуальных окружений ? Ответить

Читайте также:  Multi line linux command

Это кому не хватает возможности BASH?? Тому кто его не знает. BASH намного мощнее и удобнее кривого и тормозного пайтона. Единственный недостаток BASH он как и C не для школяров, а для серьёзных дядек. Ответить

Источник

What do I use on linux to make a python program executable

I just installed a linux system (Kubuntu) and was wondering if there is a program to make python programs executable for linux.

No, it isn’t a dupe. That question is related to distributing python software avoiding library availability and compatibility issues.

9 Answers 9

Just put this in the first line of your script :

Make the file executable with

I’m confused. How does the «#!/usr/bin/env python» work when the hash is supposed to make it a commented line? I tried running the script without the hash line, but it didn’t work. So obviously the line is required, but how does it work if it’s a comment?

If you’re sending scripts to a fellow programmer, this is fine. But this is not a suitable way to distribute Python programs to end users. What if the user doesn’t have Python installed? What if they do, but it’s a different version than you wrote the program in? Overall this will only work for a tiny percentage of users, especially on Windows.

@MathManiac If you proceed as you’re implying, about 15% of users will be unable to run your application. This will be a crippling support burden, not to mention a fantastically hostile user experience, which will generate a torrent of hateful «application X sucks» posts. I stand by my assertion that this is not a suitable way to distribute applications to end-users.

@Nav That’s called a Shebang. It’s commented out because it shouldn’t be interpreted by python. It gives information to the operating system. More specifically it says what program should be used to execute the script.

If you want to obtain a stand-alone binary application in Python try to use a tool like py2exe or PyInstaller.

You can use PyInstaller. It generates a build dist so you can execute it as a single «binary» file.

Python 3 has the native option of create a build dist also:

Putting these lines at the starting of the code will tell your operating systems to look up the binary program needed for the execution of the python script i.e it is the python interpreter.

So it depends on your operating system where it keeps the python interpreter. As I have Ubuntu as operating system it keeps the python interpreter in /usr/bin/python so I have to write this line at the starting of my python script;

Читайте также:  Линукс забыл пароль root

After completing and saving your code

  1. Start your command terminal
  2. Make sure the script lies in your present working directory
  3. Type chmod +x script_name.py
  4. Now you can start the script by clicking the script. An alert box will appear; press «Run» or «Run in Terminal» in the alert box; or, at the terminal prompt, type ./script_name.py

If one want to make executable hello.py

first find the path where python is in your os with : which python

it usually resides under «/usr/bin/python» folder.

at the very first line of hello.py one should add : #!/usr/bin/python

then through linux command chmod

one should just make it executable like : chmod +x hello.py

  1. put #! /usr/bin/env python3 at top of script
  2. chmod u+x file.py
  3. Change .py to .command in file name

This essentially turns the file into a bash executable. When you double-click it, it should run. This works in Unix-based systems.

These steps works irrespective of whether you have single standalone python script or if you have multiple dependent script called by your main file.

On MacOS systems, the source file path requires the full path, not relative to where you are specifying it.

as I find it a bit ambiguous, as to what exactly you refer to with a »Program», I present here an answer, how to make a »package»-program executable from the command line in Linux, as this was not answered in this question before.

Essentially you have to follow the official instructions, but in essence, you have to do the following steps:

1.) Refactor your program into the structure presented here (you essentially have the choice between two structures)

2.) Assuming you chose the »flat layout» and your project name is awesome (i.e. assuming your source files lie in program/awesome ), you create two files, setup.py and setup.cfg file, at your program level (i.e. program ), with the contents below:

from setuptools import setup setup() 
[metadata] name = awesome version = 0.0.1 description = My awesome program is 'awesomer' than yours author =Awesome Name email = awesome@program.earth [options] packages = find: install_requires = [options.entry_points] console_scripts = awesome = awesome:main 

3.) In your program/awesome folder you create a __init__.py file, with a main function, where you can then start your »real» program. I.e. put into your __init__.py file at least the following code to see an effect:

def main(): print("MY AWESOME PROGRAM WORKS!") 

4.) Install it using e.g. python setup.py install

5.) Execute it from the command line using awesome , e.g. $> awesome

Hope this helps anyone — Thinklex

Источник

Оцените статью
Adblock
detector