Как я могу запустить свой скрипт Python из терминала в Mac OS X без необходимости вводить полный путь? - PullRequest
8 голосов
/ 18 января 2011

Я нахожусь на Mac OS 10.6 Snow Leopard и пытаюсь добавить каталог в переменную PATH, чтобы я мог запустить маленький написанный мной скрипт, набрав просто python alarm.py в командной строке терминала.

Я поместил путь в мой файл .profile, и, кажется, он появляется, когда я повторяю $ PATH, но python все еще не может найти скрипт, который я поместил в этот каталог.

Вот содержимое моего файла .profile в моем домашнем каталоге:

~ toby$ vim .profile 
export PATH=/Users/tobylieven/Documents/my_scripts:$PATH

Вот вывод echo $ PATH, где все выглядит хорошо:

~ toby$ echo $PATH
/Users/tobylieven/Documents/my_scripts:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Вот скрипт, который я пытаюсь запустить:

~ toby$ ls /Users/tobylieven/Documents/my_scripts 
-rwxrwxrwx@ 1 tobylieven  staff  276 17 Jan 21:17 alarm.py

Вот команда, которую я пытаюсь использовать для запуска скрипта, и сообщение об ошибке, которое я получаю вместо:

~ toby$ python alarm.py 
python: can't open file 'alarm.py': [Errno 2] No such file or directory

Если у кого-нибудь есть идея, что я могу делать неправильно, это было бы здорово. Большое спасибо.

Ответы [ 5 ]

18 голосов
/ 18 января 2011

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

#!/usr/bin/env python

и запустите

sudo chmod a+x /Users/tobylieven/Documents/my_scripts/alarm.py

Затем вы можете набрать alarm.py, чтобы выполнить вашу программу.

4 голосов
/ 18 января 2011

измените alarm.py, чтобы включить:

#!/bin/python

в качестве самой первой строки в файле.

(или / usr / bin / python, в зависимости от того, где находится интерпретатор pythonВы можете выяснить это, набрав: which python в терминале.)

Вы можете просто запустить alarm.py вместо python alarm.py.

например:

~ toby$ alarm.py  

И фихаг, который избил меня на несколько секунд, прав, вам нужно добавить разрешения на выполнение (через chmod) в alarm.py.

3 голосов
/ 18 января 2011

Вам необходимо изменить определенную переменную пути Python: PYTHONPATH.

Итак:

export PYTHONPATH=/Users/tobylieven/Documents/my_scripts

должно заставить вас работать.

См .: Модуль PythonПуть поиска

1 голос
/ 22 мая 2019

На какой питон вы нацелены?

Вы устанавливали это с brew? Он использует другой путь.

which python3 или which python

Выберите тот, который вы хотите

Скопируйте этот вывод

Вставьте его в начало вашего файла Python

добавьте #! перед этим путем, чтобы он выглядел примерно как

#!/usr/local/bin/python3

Обязательно измените права доступа к файлу

chmod +x filename

Поместите этот файл в папку, которая находится на вашем пути

Не уверен, что ваша папка находится в вашем пути?

echo $path

Как добавить эту папку в свой путь?

Сначала найди свой путь

echo $HOME

Если вы используете bash или zsh, у вас может быть что-то вроде этого

В ~/.bash_profile или ~/.bashrc или ~/.zshrc внизу вашего файла

export PYTHON_UTILS="$HOME/code/python/utils"

export PATH="$PYTHON_UTILS:$PATH"

Подумайте об удалении .py из вашего файла, т.к. он не нужен в этом случае

Закройте и откройте свой терминал, который получает ваш файл по пути

И теперь вы должны иметь возможность обрабатывать файл python аналогично команде bash

Вам не нужно использовать python3 filename.py для запуска файла, вы можете просто использовать filename

Из любой точки вашей файловой системы!

0 голосов
/ 18 января 2011

Интересно, что я действительно боролся с OS X из Window, так это то, что вам очень трудно получить каталог вашего текущего скрипта.

Я нашел это.

#! /bin/zsh 
cd "${0:h}"  

Теперь вы можете выполнить файл python относительно исполняемого скрипта вместо того, чтобы знать точный путь к файлу python.Это может или не может помочь, но я много использую это, чтобы мои скрипты и файлы .command работали лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...