Làm cách nào để tìm đường dẫn đầy đủ của trình thông dịch Python hiện đang chạy từ bên trong tập lệnh Python hiện đang thực thi?Tìm đường dẫn đầy đủ của trình thông dịch Python?
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ờ là documented here
Thử whereis lệnh:
whereis python
Đ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
và không di động đối với một số hệ điều hành, chẳng hạn như Windows – wojtow
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
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
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'
>>>
>>>
"từ bên trong tập lệnh Python hiện đang chạy" đã viết OP – nodakai
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
Đ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. –
@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
Nó hoạt động cho tôi với Python 3, nhưng không Python 2. –