Запуск сценариев Python из DOS или оболочки Python без указания пути - PullRequest
0 голосов
/ 16 июля 2011

Я пытался отредактировать реестр, чтобы при вводе в оболочку python или в окно DOS:

python sample.py

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

python C:\PythonPractice\sample.py

какие-либо идеи?

Ответы [ 3 ]

0 голосов
/ 16 июля 2011
@echo off
c:
CD c:\py
c:\python271\python.exe %1

Сохраните это как py.bat в папке на вашем PATH. Измените c: \ py на каталог ваших скриптов.

Вы можете вызывать свои скрипты из любой точки мира так:

C:\Windows>py hallowelt.py
Hallo!
0 голосов
/ 12 января 2014

Небольшое улучшение ответа Иакова:

@echo off
pushd c:\py
c:\python271\python.exe %*
popd

Сохраните это как py.cmd в одном из каталогов из вашей переменной среды PATH. Тогда вы можете позвонить

py sample.py arg1 arg2 ...

Это работает с любым количеством аргументов.

Но, как уже упоминалось в wberry, вы можете изменить рабочий каталог внутри скрипта Python, если вам это действительно нужно (но я думаю, что это плохая идея):

os.chdir(os.path.abspath(os.path.dirname(__file__))) #untested

Хотя это не совсем ответ на ваш вопрос, я рекомендую использовать следующую схему: Скажем, у меня есть скрипт Python c: \ mydir \ myprog.py , который требует специальных переменных среды (PATH, ORACLE_HOME и т. Д.) И, возможно, ему нужен определенный рабочий каталог.

Затем я создаю файл myprog.cmd в том же каталоге:

@echo off
setlocal
set PATH=...
set ORACLE_HOME=...
pushd %~dp0
python %~dpn0.py %*
popd
endlocal

Часть pushd / popd предназначена для изменения и восстановления рабочего каталога.

Для объяснения синтаксиса% ~ ... введите

help call 

в командной строке.

Этот подход дает вам полный контроль над средой вашей программы на Python. Обратите внимание, что вызов python является общим: если вам нужен второй скрипт Python otherprog.py , просто сохраните копию myprog.cmd как otherprog.cmd .

0 голосов
/ 16 июля 2011

Для окна DOS:

set VARIABLE=yourpath
python %VARIABLE%\sample.py

Итак, для вашего примера вы можете сделать это:

set p=C:\PythonPractice
python %p%\sample.py

Вы можете настроить это постоянно, перейдя в «Панель управления» >> «Система» >> «Расширенные настройки системы» >> «Переменные среды». Возможно, вы захотите добавить переменную в свою учетную запись, если только вы не хотите, чтобы она влияла на все системные профили. Вероятно, потребуется перезагрузка.

...