เรียกใช้สคริปต์ Python ใน PowerShell โดยตรง


22

ฉันใช้ Windows PowerShell สมมติว่าฉันมีสคริปต์ที่เรียกtest.pyว่าพิมพ์บางสิ่ง ถ้าฉันทำ:

PS D:\>.\test.py

จากนั้นจะเปิดหน้าต่าง CMD ซึ่งพิมพ์บางสิ่งแล้วปิด จริงๆแล้วมันใช้ล่าม Python ภายใต้ CMD ถ้าฉันทำ

PS D:\>python test.py

มันทำหน้าที่เหมือนที่ฉันคาดไว้โดยมีเอาต์พุตปรากฏใน PowerShell

ฉันจะสร้างให้สคริปต์ทำงานใน PowerShell เมื่อฉันเพิ่งตั้งชื่อได้อย่างไร


เมื่อคุณอัปเดตPATHEXTตัวแปรของคุณโดยใช้คำตอบที่ยอมรับของ zdan ด้านล่างหากคุณใส่สคริปต์ Python ลงในไดเรกทอรีที่ตั้งชื่อโดยPATHตัวแปรสภาพแวดล้อมของคุณคุณไม่จำเป็นต้องระบุเส้นทางที่ผ่านการรับรอง (หรือญาติ) ที่มีคุณสมบัติครบถ้วน จากนั้นสคริปต์ Python จะทำงานเหมือนโปรแกรมที่ติดตั้งอื่น ๆ และคุณสามารถรวมเข้าด้วยกันในไพพ์ไลน์กับโปรแกรม / cmdlets อื่น ๆ ( เช่น get-clipboard | myscript.py ) และสิ่งดีๆอื่น ๆ ทั้งหมด :)
TheDudeAbides

คำตอบ:


24

แก้ไขตัวแปรสภาพแวดล้อม PATHEXT และเพิ่มนามสกุล. py

เพียงเพิ่มบรรทัดนี้ในโปรไฟล์ PowerShellของคุณ:

$env:PATHEXT += ";.py"

หรือคุณสามารถแก้ไข PATHEXT ทั่วโลกในการตั้งค่าระบบ (เพียงค้นหาในเมนู Start สำหรับ "สิ่งแวดล้อม" และเลือกตัวเลือกสำหรับ "แก้ไขตัวแปรสภาพแวดล้อมสำหรับบัญชีของคุณ")


-1

คุณอาจติดตั้ง Python มากกว่าหนึ่งเวอร์ชันและ IDLE รุ่นที่ใช้นั้นใหม่กว่า เพื่อดูว่าคุณมีไพ ธ อนรุ่นใดคุณสามารถพิมพ์> python -V ที่บรรทัดรับคำสั่ง หากเวอร์ชันนั้นดูเหมาะสมคุณอาจต้องใช้พา ธ เต็มไปยังไฟล์เป็นพารามิเตอร์ที่สอง เช่น> python C: \ myfile.py

หากคุณติดตั้ง Python อย่างถูกต้องมีโอกาสที่เพียงแค่พิมพ์ชื่อของสคริปต์จะทำงานด้วย python เช่น myfile.py

ฉันมักจะพบว่าการเพิ่ม C: \ Python27 ให้กับตัวแปร% PATH% และ. PY ไปยังตัวแปร% PATHEXT% ทำให้การเรียกใช้สคริปต์ง่ายขึ้น ในกรณีนี้เพียงแค่> myfile ควรทำงาน

แก้ไขหลังจากอัปเดต:

การพิมพ์เพียง> python โดยไม่มีพารามิเตอร์เปิด python ใน 'โหมดโต้ตอบ' ซึ่งแตกต่างจากแบทช์หรือโหมดสคริปต์ที่สคริปต์ของคุณมีไว้สำหรับ หากดำเนินการโดยมีอาร์กิวเมนต์อาร์กิวเมนต์แรกจะถูกใช้เป็นพา ธ ไฟล์และอาร์กิวเมนต์เพิ่มเติมจะถูกส่งผ่านไปยังสคริปต์ในรายการ sys.argv


ทำไมคุณคัดลอกและวางคำตอบของคุณจากที่อื่น? คุณลืมที่จะคัดลอกการจัดรูปแบบที่ถูกต้องและไม่มี "อัปเดต" ในนั้น
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.