làm thế nào để thay đổi phiên bản python mặc định?


106

Tôi đã cài đặt python 3.2 trong máy mac của mình. Sau khi tôi chạy / Applications / Python 3.2 / Update Shell Profile.command , thật khó hiểu khi tôi nhập python -V trong Terminal nó nói rằng Python 2.6.1 , làm cách nào tôi có thể thay đổi phiên bản python mặc định?



Xem opensource.com/article/19/5/python-3-default-mac để biết giải pháp tốt khi sử dụng pyenv.
Thomas Ahle

Câu trả lời:


114

Điều này có lẽ là mong muốn cho khả năng tương thích ngược.

Python3 phá vỡ khả năng tương thích ngược và các chương trình gọi 'python' có thể mong đợi python2. Bạn có thể có nhiều chương trình và tập lệnh mà bạn thậm chí không biết về nó mong đợi python = python2 và việc thay đổi điều này sẽ phá vỡ các chương trình và tập lệnh đó.

Câu trả lời có lẽ bạn đang tìm kiếm là Bạn không nên thay đổi điều này .

Tuy nhiên, bạn có thể tạo một bí danh tùy chỉnh trong shell của mình. Cách bạn làm như vậy phụ thuộc vào shell, nhưng có lẽ bạn có thể làmalias py=python3

Nếu bạn bối rối về cách khởi động phiên bản mới nhất của python, thì ít nhất là trường hợp trên Linux python3để python2nguyên cài đặt của bạn (do các lý do tương thích ở trên) ; do đó bạn có thể bắt đầu python3 bằng python3lệnh.


36
Đây là thông tin hữu ích, nhưng câu hỏi là "làm cách nào để thay đổi phiên bản python mặc định." Chúng tôi có thể thêm một cái gì đó để giúp những người đang cố gắng làm điều đó không?
dmeyerson

Trên Mac, cài đặt Python3 cũng giữ nguyên Python2. Nhưng đối với tôi, dường như có một cách để thay đổi mặc định được chạy khi chỉ gõ "python". Tôi đã xem qua tùy chọn một lần. Tôi đã chọn để nó ở nguyên nơi "python --version" hiển thị 2.7.12 và "python3 --version" hiển thị 3.7.0. Tôi đồng ý với dmeyerson ở trên rằng câu hỏi là làm thế nào để thay đổi nó. Lời khuyên của bạn là tốt nhưng có một cách để thay đổi nó nếu bạn phải (hoặc thực sự, thực sự muốn).
Rich Sadowsky

3
> Câu trả lời có lẽ bạn đang tìm kiếm là Bạn không nên thay đổi điều này. Và ở đây tôi nghĩ đó là "làm thế nào để tôi thay đổi điều này"!
duane

2
Câu trả lời này là chính xác. Không thay đổi pythonđiểm nào ở cấp hệ thống vì bạn có thể phá vỡ các thành phần quan trọng của hệ điều hành nếu bạn làm vậy . Thay vào đó, hãy sử dụng cài đặt Python 3 và ảo hóa riêng để tạo cho mình một Python mặc định “cục bộ”.
Martijn Pieters

50

Kiểm tra vị trí của python 3

$ which python3
/usr/local/bin/python3

Viết bí danh trong bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Tải lại bash_profile

source ~/.bash_profile

Xác nhận lệnh python

$ python --version
Python 3.6.5

2
đây là một giải pháp tồi. Như đã đề cập trong câu trả lời được chấp nhận, $ pythonđược dành riêng cho python 2. Bất kỳ chương trình nào bạn chạy trên máy tính của mình mong đợi python 2 sau đó sẽ nhận python 3 do bí danh, điều này có thể gây ra hậu quả tiêu cực không lường trước được.
Shonin

Ý định của Apple không liên quan đến câu hỏi.
duane

45

Trên Mac OS X sử dụng trình cài đặt python.org như bạn có, bạn cần phải gọi Python 3 bằng python3, không phải python. Điều đó hiện được dành riêng cho phiên bản Python 2. Bạn cũng có thể sử dụng python3.2để gọi phiên bản đó một cách cụ thể.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Nếu bạn cũng cài đặt Python 2 từ python.org, nó sẽ có một thư mục bin khuôn khổ tương tự không có tên tệp trùng lặp (ngoại trừ 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*

Về "hiện được dành riêng cho các phiên bản Python 2," bạn có liên kết cho điều đó không?
tự đại diện

Nếu tôi có python 3.4 và python 3.7, khi tôi nhập python3 từ thiết bị đầu cuối, nó thực thi python 3.4 không phải 3.7, làm thế nào để khắc phục điều này?
Ysh


19

Làm điều đúng, làm điều đúng!

---> Zero Mở thiết bị đầu cuối của bạn,

- Đầu tiên python -V, nó có khả năng hiển thị:

Python 2.7.10

- Đầu vào thứ hai python3 -V, nó có khả năng hiển thị:

Python 3.7.2

--Đầu vào thứ ba where pythonhoặc which python, Nó có khả năng hiển thị:

/usr/bin/python

--- Thứ tư đầu vào where python3hoặc which python3, Nó có khả năng hiển thị:

/usr/local/bin/python3

--Thứ năm, thêm dòng sau vào cuối tệp biến môi trường PATH của bạn trong ~/.profile file or ~/.bash_profileBash hoặc ~/.zshrcdưới zsh.

alias python='/usr/local/bin/python3'

HOẶC LÀ

alias python=python3

-Nhập thứ sáu source ~/.bash_profiledưới Bash hoặc source ~/.zshrcdưới zsh.

- Thứ bảy Thoát khỏi thiết bị đầu cuối.

--- Thứ tám Mở thiết bị đầu cuối của bạn và đầu vào python -V, nó có thể hiển thị:

Python 3.7.2

Tôi đã thử thành công.

Những người khác, ~/.bash_profilezsh dưới không phải là điều đó ~/.bash_profile.

Biến môi trường PATH dưới zsh thay thế ~/.profile(hoặc ~/.bash_file) qua ~/.zshrc.

Giúp các bạn với!


16

Thay đổi Python "mặc định" bằng cách đặt nó trước Python hệ thống trên đường dẫn của bạn, ví dụ:

export PATH=/usr/local/bin:$PATH

Giả định của tôi là bằng cách làm này, bạn có thể phá vỡ một cái gì đó trên Mac. Vì có nhiều chương trình và tập lệnh sử dụng bí danh "python". Nếu đột nhiên, vì sự thay đổi ưu tiên trong PATH, chúng bắt đầu trỏ đến Python3 chứ không phải Python2 - điều đó có thể phá vỡ điều gì đó. Có thể là toàn bộ hệ điều hành ... đó là giả định của tôi và không được thử nghiệm.
Aivoric,

3
Bất kỳ phần mềm hệ thống nào sẽ sử dụng đường dẫn đầy đủ đến hệ thống được cung cấp Python.
Adam Vandenberg

2

Theo tìm kiếm nhanh trên google, bản cập nhật này chỉ áp dụng cho shell hiện tại mà bạn đã mở. Nó có thể được khắc phục bằng cách gõ python3, vì mac và linux đủ giống nhau để những thứ như thế này trùng hợp. Liên kết đến kết quả tìm kiếm của google.

Ngoài ra, như ninjagecko đã nêu, hầu hết các chương trình vẫn chưa được cập nhật lên 3.x, vì vậy việc đặt python mặc định là 3.x sẽ phá vỡ nhiều tập lệnh python được sử dụng trong các ứng dụng.


2

Tôi đang sử dụng OS X 10.7.5 và Python 3.4.2. Nếu bạn gõ python3và những gì bạn muốn chạy, nó sẽ chạy nó bằng python 3. Ví dụ pyhton3 test001.py. Điều đó đã chạy một chương trình thử nghiệm tôi đã thực hiện có tên là test001. Tôi hi vọng cái này giúp được.


5
Chào mừng bạn đến với Stack Overflow! Có vẻ như câu trả lời của bạn không phải là câu trả lời thực sự cho câu hỏi như đã hỏi. Vui lòng tham khảo stackoverflow.com/help/how-to-answer để được trợ giúp nếu bạn muốn khắc phục sự cố.
Những người khác

Tôi đã dành HOURS để cố gắng làm cho python3 hoạt động trên máy Mac của mình - hóa ra nhập 'python3' thay vì 'python' cũ đã thực hiện thủ thuật.
YCode

1

Hướng đến:

Máy tính của tôi -> Thuộc tính -> Nâng cao -> Biến môi trường -> Biến hệ thống

Giả sử bạn đã thêm python 2.7 trong biến đường dẫn và bạn muốn thay đổi đường dẫn mặc định thành python 3.x

sau đó thêm đường dẫn của thư mục python3.5.x trước đường dẫn python2.7.

mở cmd: gõ "python --version"

phiên bản python sẽ được thay đổi thành python 3.5.x


3
Đó là Windows.
charles ross

Một số IDE có thể bao gồm thiết bị đầu cuối / cmds / bảng điều khiển, truyền bá các biến môi trường. Khởi động lại IDE để nhận các thay đổi bên trong thiết bị đầu cuối nhúng.
UselesssCat

0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Điều này sẽ phá vỡ các tập lệnh, nhưng chính xác là cách để thay đổi python. Bạn cũng nên viết lại các tập lệnh để không giả sử pythonlà 2.x. Điều này sẽ hoạt động bất kể nơi bạn gọi systemhoặc exec.


0

Tóm lại: thay đổi đường dẫn trong Biến môi trường!

Cho cửa sổ:

  • Nâng cao System Settings > Advance (tab). Ở dưới cùng, bạn sẽ tìm thấy'Environment Variables'

  • Bấm đúp vào Path. Bạn sẽ thấy đường dẫn đến một trong các bản cài đặt python, hãy thay đổi đường dẫn đó thành đường dẫn của phiên bản bạn muốn.


0

Kiểm tra đường dẫn thực thi của python3 nơi nó có thư viện

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

mở tệp bash_profile và thêm bí danh

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Tải lại bash_profile để các sửa đổi có hiệu lực

source ~/.bash_profile

Chạy lệnh python và kiểm tra xem nó có đang tải hay không với python3

$ python --version
Python 3.6.5
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.