tôi đã tìm thấy những điều sau đây để làm việc trên cả Linux và Windows, trong cả hai người phiên dịch bình thường Python và IPython (mặc dù tôi không thể nói về IronPython):
isInteractive = hasattr(sys, 'ps1') or hasattr(sys, 'ipcompleter')
Tuy nhiên, lưu ý rằng khi sử dụng ipython, nếu tệp được chỉ định làm đối số dòng lệnh, nó sẽ chạy trước khi trình thông dịch trở nên tương tác. Thấy những gì tôi có ý nghĩa dưới đây:
C:\>cat C:\demo.py
import sys, os
# ps1=python shell; ipcompleter=ipython shell
isInteractive = hasattr(sys, 'ps1') or hasattr(sys, 'ipcompleter')
print isInteractive and "This is interactive" or "Automated"
C:\>python c:\demo.py
Automated
C:\>python
>>> execfile('C:/demo.py')
This is interactive
C:\>ipython C:\demo.py
Automated # NOTE! Then ipython continues to start up...
IPython 0.9.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [2]: run C:/demo.py
This is interactive # NOTE!
HTH
Nguồn
2009-10-19 22:14:47
Chào mừng đến với trang web, Pavel. Nếu bất kỳ câu trả lời nào dưới đây giải quyết được vấn đề của bạn, bạn có thể muốn chính thức chấp nhận câu trả lời mà bạn cảm thấy cung cấp câu trả lời hay nhất; người trả lời nhận được thêm một vài điểm, và nó giúp khách truy cập trong tương lai xác định giải pháp tốt nhất. –
bằng cách này, những gì về chạy 'printenv' trong một công việc và xem các biến môi trường được thiết lập bởi Sun Grid Engine (chẳng hạn như số công việc) mà không được thiết lập trong một vỏ tương tác điển hình? –
Có thể trùng lặp [Kiểm tra vỏ tương tác trong tập lệnh Python] (https://stackoverflow.com/questions/6108330/checking-for-interactive-shell-in-a-python-script) – ideasman42