Câu trả lời:
sys.executable
chứa đường dẫn đầy đủ của trình thông dịch Python hiện đang chạy.
import sys
print(sys.executable)
mà bây giờ được ghi lại ở đây
#!/usr/bin/env python3
sẽ trả về đường dẫn nhị phân đầy đủ chính xác thông qua sys.executable
. Có lẽ phiên bản OS hoặc Python của bạn hoạt động hơi khác nhau.
python
và python3
lệnh và nó in thực thi chính xác.
Chỉ cần lưu ý một cách khác nhau về tính hữu dụng đáng ngờ, sử dụng os.environ
:
import os
python_executable_path = os.environ['_']
ví dụ
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
được thiết lập bởi vỏ. Nhưng nó không cần phải được đặt, vì vậy điều này có thể đưa ra câu trả lời sai.
Có một vài cách khác để tìm ra python hiện đang được sử dụng trong Linux là: 1) which python
lệnh. 2) command -v python
lệnh 3)type python
lệnh
Tương tự Trên Windows với Cygwin cũng sẽ có kết quả tương tự.
kuvivek@HOSTNAME ~
$ which python
/usr/bin/python
kuvivek@HOSTNAME ~
$ whereis python
python: /usr/bin/python /usr/bin/python3.4 /usr/lib/python2.7 /usr/lib/python3.4 /usr/include/python2.7 /usr/include/python3.4m /usr/share/man/man1/python.1.gz
kuvivek@HOSTNAME ~
$ which python3
/usr/bin/python3
kuvivek@HOSTNAME ~
$ command -v python
/usr/bin/python
kuvivek@HOSTNAME ~
$ type python
python is hashed (/usr/bin/python)
Nếu bạn đã ở trong vỏ trăn. Hãy thử bất cứ ai trong số này. Lưu ý: Đây là một cách thay thế. Không phải là cách pythonic tốt nhất.
>>>
>>> import os
>>> os.popen('which python').read()
'/usr/bin/python\n'
>>>
>>> os.popen('type python').read()
'python is /usr/bin/python\n'
>>>
>>> os.popen('command -v python').read()
'/usr/bin/python\n'
>>>
>>>
python
từ vỏ. Nếu bạn bắt đầu với một đường dẫn khác nhau rõ ràng (ví dụ /opt/python/2.5/bin/python
), hoặc sử dụng python3
và sau đó chạy các lệnh python đó, tất cả chúng đều tạo ra câu trả lời không chính xác và điều đó không liên quan gì đến việc không phải là cách pythonic nhất, nó hoàn toàn sai.
/usr/bin/env python
thực thi nhưenv -i ./script
. Trong trường hợp đó, nó trả về thư mục làm việc hiện tại.