2010-04-07 69 views

Trả lời

337

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ờ là documented here

+0

Điều này dường như không hoạt động với các tập lệnh có chữ "vi/-r/bin/env python' được thực thi dưới dạng' env -i./Script'. Trong trường hợp đó nó trả về thư mục làm việc hiện tại. –

+1

@JohnFreeman: Tôi đã thử điều này trên một hộp GNU/Linux w/GNU coreutils 8.4 (env) và Python 3.4.2. '#!/usr/bin/env python3' sẽ trả lại đường dẫn nhị phân đầy đủ chính xác qua' sys.executable'. Có lẽ phiên bản hệ điều hành hoặc Python của bạn hoạt động hơi khác nhau. – kevinarpe

+0

Nó hoạt động cho tôi với Python 3, nhưng không Python 2. –

-1

Thử whereis lệnh:

whereis python 
+7

Điều đó cho bạn biết những gì trong đường dẫn của bạn, nhưng nó không cho bạn biết chương trình đang chạy tập lệnh hiện tại. – vy32

+4

và không di động đối với một số hệ điều hành, chẳng hạn như Windows – wojtow

+7

Câu hỏi đặt ra là "..trong tập lệnh Python hiện đang thực thi?". 'whereis' không nằm trong tập lệnh Python. – guettli

7

Chỉ cần lưu ý một cách khác nhau của 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 
+1

vô ích nhưng buồn cười :) (có lẽ cũng không di động) – eudoxos

+1

Dường như '_' được đặt bởi trình bao. Nhưng nó không cần phải được thiết lập, vì vậy điều này có thể đưa ra câu trả lời sai. – vy32

+0

Nó không hoạt động, ít nhất là trên Windows với Anaconda. –

1

Có một vài cách thay thế để tìm ra những tră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ự như vậy Trên Windows với Cygwin cũng sẽ cho kết quả giống nhau.

[email protected] ~ 
$ which python 
/usr/bin/python 

[email protected] ~ 
$ 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 

[email protected] ~ 
$ which python3 
/usr/bin/python3 

[email protected] ~ 
$ command -v python 
/usr/bin/python 

[email protected] ~ 
$ 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 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' 
>>> 
>>> 
+3

"từ bên trong tập lệnh Python hiện đang chạy" đã viết OP – nodakai

+0

Ví dụ "đã có trong vỏ trăn" của bạn, tất cả đều giả định rằng trình vỏ python bắt đầu là những gì bạn nhận được nếu bạn gõ 'python' từ trình bao. Nếu bạn bắt đầu với một đường dẫn rõ ràng khác (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 tạo ra các câu trả lời sai ** và không có gì để làm với không phải là cách pythonic nhất, nó chỉ là đồng bằng sai. – Anthon

Các vấn đề liên quan