2009-03-15 49 views

Trả lời

104
>>> import os 
>>> import sys 
>>> os.path.dirname(sys.executable) 
'C:\\Python25' 
+0

Nếu bạn ở trong một virtualenv thì sao? Điều này sẽ không hoạt động sau đó. – user60561

+0

@ user60561 Nó sẽ cung cấp cho bạn đường dẫn đến tệp thực thi Python của Virtualenv. Tôi không biết một cách để có được python hệ điều hành, trong trường hợp đó, nhưng tôi muốn được quan tâm để biết lý do tại sao bạn cần điều đó, nếu bạn đang chạy từ bên trong một Virtualenv? – elo80ka

+0

Kịch bản của tôi tạo một virtualenv, vì vậy nó sử dụng hệ thống python để làm điều đó. Bạn đã cho tôi suy nghĩ mặc dù, có lẽ đó là không cần thiết ... Tôi sẽ kiểm tra nó ra vào thứ hai, cảm ơn bạn! – user60561

8

Trong gói sys, bạn có thể tìm thấy rất nhiều thông tin hữu ích về việc cài đặt của bạn:

import sys 
print sys.executable 
print sys.exec_prefix 

Tôi không chắc chắn điều này sẽ cung cấp cho hệ thống Windows của bạn, nhưng trên máy Mac của tôi executable điểm đến Python nhị phân và exec_prefix đến gốc cài đặt.

Bạn cũng có thể thử này để kiểm tra mô-đun sys của bạn:

import sys 
for k,v in sys.__dict__.items(): 
    if not callable(v): 
     print "%20s: %s" % (k,repr(v)) 
+0

@GuoH chúng ta có thể làm điều tương tự sử dụng tập tin thực thi? – Patrick

+0

Bạn có thể làm một cái gì đó như 'python -c" nhập sys; in sys.executable "' –

11

Mở cửa sổ cài đặt của tôi, tôi nhận được những kết quả này:

>>> import sys 
>>> sys.executable 
'C:\\Python26\\python.exe' 
>>> sys.platform 
'win32' 
>>> 

(Bạn cũng có thể tìm trong sys.path cho các địa điểm hợp lý.)

+0

nhưng làm thế nào chúng ta có thể làm tương tự bằng cách sử dụng tập tin thực thi? – Patrick

35

Nếu bạn cần biết cài đặt pa th dưới Windows mà không cần bắt đầu trình thông dịch python, hãy xem trong Windows registry.

Mỗi phiên bản Python cài đặt sẽ có một khóa registry trong cả hai:

  • HKLM\SOFTWARE\Python\PythonCore\versionnumber\InstallPath
  • HKCU\SOFTWARE\Python\PythonCore\versionnumber\InstallPath

Trong Windows 64-bit, nó sẽ chịu phím Wow6432Node:

  • HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\versionnumber\InstallPath
+0

điều này có vẻ là sai trên cửa sổ 7, ít nhất là cho python 2.7 – sharkin

+0

Thông tin nằm ở đâu trên cửa sổ 7? Nếu bạn có một máy tính Windows 7 tiện dụng, bạn có thể thực hiện tìm kiếm đăng ký cho Python và PythonCore không? Và xem bạn có tìm thấy giá trị InstallPath ở đâu đó không. – codeape

+7

Trong các phiên bản 64-bit của cửa sổ (mà bạn có thể đang sử dụng), nó sẽ nằm trong khóa Wow6432Node, IE HKLM \ SOFTWARE \ Wow6432Node \ Python \ PythonCore \ versionnumber \ InstallPath –

2

Nếu bất cứ ai cần phải làm điều này trong C# Tôi đang sử dụng đoạn mã sau:

static string GetPythonExecutablePath(int major = 3) 
{ 
    var software = "SOFTWARE"; 
    var key = Registry.CurrentUser.OpenSubKey(software); 
    if (key == null) 
     key = Registry.LocalMachine.OpenSubKey(software); 
    if (key == null) 
     return null; 

    var pythonCoreKey = key.OpenSubKey(@"Python\PythonCore"); 
    if (pythonCoreKey == null) 
     pythonCoreKey = key.OpenSubKey(@"Wow6432Node\Python\PythonCore"); 
    if (pythonCoreKey == null) 
     return null; 

    var pythonVersionRegex = new Regex("^" + major + @"\.(\d+)-(\d+)$"); 
    var targetVersion = pythonCoreKey.GetSubKeyNames(). 
             Select(n => pythonVersionRegex.Match(n)). 
             Where(m => m.Success). 
             OrderByDescending(m => int.Parse(m.Groups[1].Value)). 
             ThenByDescending(m => int.Parse(m.Groups[2].Value)). 
             Select(m => m.Groups[0].Value).First(); 

    var installPathKey = pythonCoreKey.OpenSubKey(targetVersion + @"\InstallPath"); 
    if (installPathKey == null) 
     return null; 

    return (string)installPathKey.GetValue("ExecutablePath"); 
} 
+1

HKCU và HKLM có tồn tại đối với hầu hết người dùng không? Điều này dường như sẽ bỏ lỡ trường hợp python cài đặt trên toàn cầu. – jtbr

+0

Có vẻ như tôi đã tạo ra một lỗi ở đó. – Peter

6

Nếu bạn có python trong biến môi trường của bạn, do đó bạn cũng có thể sử dụng lệnh gõ vào cmd như

>>> where python

command line image

8

Nó sẽ là một trong hai

  • C: \ Python36
  • C: \ Users \ (bạn đăng nhập tài khoản) \ AppData \ Local \ Programs \ Python \ Python36
+0

đường dẫn python 3.6 của tôi trên win10: 'C: \ Users \ YANG.LEI \ AppData \ Local \ Programs \ Python \ Python36-32' –

+0

đúng cho python 3 – danday74

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