쉘에서 직접 파이썬 프로그램을 실행하려면 어떻게해야합니까?


10

나는 대본을 썼다. 시작하면 중지되지 않으며 인터넷에서 데이터를 계속 가져옵니다. 나는 이것을 이런 식으로 부를 수 있습니다.

cd /User/Desktop/project/internetScanner/
python3 main.py start

그러나 대상 내에서 다음과 같이 터미널에서 직접 호출하고 싶습니다.

internetScanner start

어떻게해야합니까?


2
제목을 변경할 수 있는지 궁금합니다 ..
user606723

@ user606723 변경 사항이 있으면 수정 사항을 제안하십시오. 첫 번째 제목 "프로그램을 쉘에서 실행할 수있게하는 방법?" 아주 좋지 않았다.
slhck

답변:


27

당신은 아마 파일 이름을 변경해야 main.py하는가 internetScanner. * nix의 확장은 전적으로 선택 사항입니다. 여기서 중요하지 않습니다.

mv main.py internetScanner

그런 다음이 파일에 처음에 다음 줄을 추가하십시오.

#!/usr/bin/env python3

이렇게하면 셸이 파일을 실행할 때 python3내용을 해석하는 데 사용할 수 있습니다. 이것은 Shebang 으로 알려져 있습니다 . 이제 파일을 실행 가능하게 만드십시오.

chmod +x internetScanner

이제 다음 내에서 프로그램을 실행할 수 있습니다 /User/Desktop/project/internetScanner/.

./internetScanner start

프로그램은 포 그라운드에서 실행되며 Ctrl- 를 누를 때까지 계속 실행 C됩니다. 이를 원하지 않으면 명령 뒤에 앰퍼샌드를 추가하여 백그라운드에서 프로그램을 시작할 수도 있습니다.

./internetScanner start &

이렇게하면 프로그램이 실행되지만 셸을 계속 사용할 수 있습니다. 이것을 작업 제어라고하며 여기 에 대한 간단한 자습서가 있습니다 .

이제 시스템의 어느 곳에서나 프로그램을 실행할 수 있으려면 internetScanner디렉토리를 다음 에 추가해야 합니다 PATH. PATH 및 기타 환경 변수 란 무엇이며 어떻게 설정하거나 사용합니까?


좋은 대답입니다. 나는 그가 것을 추가하는 것이 좋습니다 줄 그가 그것을 기다릴 및 / 또는 파일로의 출력 및 오류 스트림을 리디렉션 할하지 않는 경우 앰퍼샌드 (&)로 명령을 종료합니다.
Ben Hocking

@ BenHocking 감사합니다, 나는 그것을 대답에 추가했습니다.
slhck

X &프로세스를 제어 쉘에서 분리하지 않고 프로세스 만 백그라운드로 지정합니다. 즉, 쉘이 종료되면 TERM 신호가 전송됩니다. 그래서 당신은 당신이 사용해야하지 않을 경우 분리를 , detach ./internetScanner start.
Dan D.


$ PATH의 어딘가에 main.py심볼릭 링크되어 있으면 이름 을 지정할 수 있습니다 internetScanner.
jdd

2

/User/Desktop/project/internetScanner/단일 사용자 용으로 설치하려는 경우 다른 파일 이 필요 하지 않다고 가정하면 ( ln -s) main.py에 링크하십시오 $HOME/bin/internetScanner. mkdir을 $HOME/bin먼저 해야 할 것입니다 .

다음에 로그인하면 $HOME/binPATH에 추가 될 수 있습니다. 모든 사용자가 사용할 수 있도록하려면에 복사하십시오 /usr/local/bin.

에서 실행해야하는 경우 /User/Desktop/project/internetScanner/가져 오기 os및 호출로 시작하십시오.

os.chdir('/User/Desktop/project/internetScanner/') 

또는에서 실행 스크립트를 만들 $HOME/bin거나 /usr/local/bin변경한다는 /User/Desktop/project/internetScanner/하고 스크립트를 실행합니다.


0

alias internetScanner "python /User/Desktop/project/internetScanner/main.py".aliases 파일을 넣 습니다 (csh 용). bash의 경우 alias internetScanner="python /User/Desktop/project/internetScanner/main.py".bashrc를 넣으십시오 . 그 후 어디서나 internetScanner start를 사용할 수 있습니다.


나는 .aliases파일에 대해 들어 본 적이 없다 . Bash의 표준입니까? 또는 명시 적으로 소스를 제공해야 .bashrc합니까?
Kazark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.