Имам пакетен файл на Windows, който се обажда на интерпретатора на Python:
python -m ...
Това работи. Но сега имам втори партиден файл, който се обажда на първия партиден файл. Когато изпълнявам този пакет файл, получавам грешка:
"python" не се разпознава като вътрешна или външна команда, операционна програма или партиден файл.
Не разбирам защо втората партида файл не работи.
Ако това помага да има конкретен пример, тук е едно:
в helloworld.py
print("Hello, world!")
в batch1.cmd
@echo off
echo About to call python...
python -m helloworld
pause
exit
в batch2.cmd
@echo off
set "path=%~dp0batch1.cmd"
start "" %path%
изход:
За да се обадите на Питон
"python" не се разпознава като вътрешна или външна команда, операционна програма или партиден файл.
Натиснете произволен клавиш, за да продължите. , ,
Отговори:
2 за отговор № 1Вие напълно нарушавате системната променлива %path%
като го поставите в партидата. Сега вашата система не може да намери python
вече.
Просто променете втората партида на:
@echo off
set "mypath=%~dp0batch1.cmd"
start "" %mypath%
За да обясните %path%
променлива по-добре. Той държи пътя към всички възможни местоположения на файловете, за да търси файлове, които да се изпълняват или да се отварят, без да е необходимо пълният път, посочен всеки път от потребител. Като изпълнявате команда в cmd
подобно на Python, първо проверява текущата директория, в която е започнала пакета, ако python.exe не е там, тя ще търси всяка отделна точка със точка и запетая в %path%
променлива. Когато зададете нов %path%
променлива, която знае само за наскоро зададения път и не може да намери Python да изпълни и вие получавате най-често срещаната cmdline грешка в прозорците.
От друга бележка, ако искате да стартирате партида1 в същия прозорец, може би помислете call
вместо start
тя
call "%mypath%"