Запускайте скрипты Python из любой папки под powershell в Windows

У меня есть папка скриптов python, которую я хотел бы запустить из любой папки под окнами. В качестве интерпретатора Python я использую Python 3.6, установленный с Miniconda.

Например, в папке C:\Users\name\my_scripts у меня есть скрипт под названием test.py со следующим содержимым.

print('test')

После перехода к папке, в которой работает скрипт, он работает, выполняя его с помощью python, производя следующий вывод.

PS C:\Users\name\my_scripts> python test.py
test

PS C:\Users\name\my_scripts> cd..
PS C:\Users\name> python test.py
C:\Users\name\Miniconda3\python.exe: can't open file 'test.py': [Errno 2] No such file or directory

Я попытался добавить C:\Users\name\my_scripts к Path . Ввод test.py в любую папку в powershell открывает сценарий в моем текстовом редакторе по умолчанию, но выполнение сценария с формой python test.py в любом месте, кроме папки сценария, приводит к ошибке «Файл не найден».

Создание переменной %PYTHONPATH%environment, содержащей папку скрипта, также не сработало. Насколько я понимаю, это нормально, поскольку эта переменная среды должна использоваться для импорта модулей из определенных мест, а не для выполнения модулей самих по себе.

Есть ли способ выполнить сценарии в папке my_scripts из любого заданного места?


person Jonas    schedule 21.11.2017    source источник
comment
python my_scripts\test.py должно работать.   -  person MarAja    schedule 21.11.2017


Ответы (2)


Я думаю, что вы можете сделать это тремя разными способами:

  • питон ./путь/к/скрипту
  • создайте пакет ваших файлов, то есть файл .whl, и установите его в pip (это работает, хотя среда conda предупреждает вас об установке pip)
  • создайте свой собственный файл .bat, в котором вы перейдете в папку сценария перед запуском python, файл .bat, который вы можете поместить в ./Miniconda/Scripts, и он будет работать, когда вы запустите приглашение conda

остался один способ, но он довольно уродлив и не рекомендуется, но он работает. сначала узнайте, какая папка находится в sys.path в сеансе python, а затем просто скопируйте your_script.py в папку. Затем вы можете получить этот скрипт, выполнив python -m your_script.py. Он будет жаловаться, что your_script не является модулем, поэтому не рекомендуется, но это быстрый путь вперед, если это то, что вы ищете.

хм, похоже, вам действительно нужно сделать файл .bat. возможно, назовите его mp.bat в этом .bat, вы можете сделать cd, а также разобрать параметры строки cmd, поэтому ваша строка ps может быть просто: mp.bat test.py, которая кажется тем, что вы ищете, немного погуглите, и я уверен, вы узнаете, как взять аргументы в файл .bat

person ahed87    schedule 21.11.2017
comment
Не могли бы вы рассказать об установке моих файлов в виде пакета? Буду ли я выполнять их, набрав python test.py? - person Jonas; 21.11.2017

python my_scripts\test.py должно работать.

В более общем случае вы запускаете скрипт Python с помощью интерпретатора: python PATH_TO_SCRIPT

person MarAja    schedule 21.11.2017
comment
Это то, что я пытаюсь обойти, добавляя свой скрипт в Path. Я бы не хотел вводить весь путь к своим скриптам при их использовании. Вместо этого я хотел бы иметь возможность вызывать их по имени из любого места, как я это делаю при выполнении Python, набрав python вместо path\to\python\python.exe - person Jonas; 21.11.2017
comment
Изменить: выполнение скрипта с помощью python my_scripts\test.py, к сожалению, не работает. Я попытался добавить путь к каталогу скрипта в переменную Pathuser и попытался создать переменную my_scriptsuser, указывающую на папку my_scripts - person Jonas; 21.11.2017
comment
Я обнаружил, что могу запустить скрипт из cmd.exe, введя python %my_scripts%\test.py, так как он объявлен как пользовательская переменная. Тем не менее я бы предпочел более короткое решение powershell - person Jonas; 21.11.2017
comment
Обновление: решение powershell - python $env:scripts\test.py, что, к сожалению, является довольно длинной командой - person Jonas; 21.11.2017