Python không hoạt động trong dòng lệnh của git bash


235

Python sẽ không chạy trong git bash (Windows). Khi tôi gõ python trong dòng lệnh, nó đưa tôi đến một dòng trống mà không nói rằng nó đã nhập python 2.7.10 giống như trong Powershell. Nó không cho tôi một thông báo lỗi, nhưng python không chạy.

Tôi đã chắc chắn rằng các biến môi trường trong PATH bao gồm c:\python27. Tôi có thể kiểm tra cái gì khác?


Một phiên trong đó vấn đề này xảy ra như sau:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python

user@hostname MINGW64 ~
$ python

... Ngồi đó mà không trở về dấu nhắc.


2
"Chẳng có gì xảy ra"? Bạn thậm chí không nhận được một lỗi? (Nghĩa là: Nếu bạn nhận được thông báo lỗi, đó sẽ là một phần của câu hỏi của bạn).
Charles Duffy

@recursive, bash thực sự tôn trọng PATH. (Tuy nhiên, nó có phiên bản riêng của biến đó).
Charles Duffy

11
Tôi không nhận được thông báo lỗi khi tôi nhập python. Nó chỉ đưa tôi đến một dòng trống, nhưng không cho thấy con trăn đang chạy thực sự
Caroline Morris

4
@CharlesDuff, cô ấy đã nói rõ, Charles, không có bất kỳ thông báo lỗi nào. Bash chỉ đóng băng. Đóng băng một thiết bị đầu cuối là thông báo lỗi.
Xanh

1
@Green, như một điều hiển nhiên bởi câu trả lời của tôi, đó không còn là một điểm thiếu rõ ràng - và đã không còn là phần tốt hơn của một năm. Hơn nữa, câu hỏi không rõ ràng về điểm này như bây giờ cho đến khi tôi chỉnh sửa nó để làm cho nó rõ ràng về điểm sau nhận xét của OP trước đó trong chủ đề này; kiểm tra lịch sử
Charles Duffy

Câu trả lời:


360

Chỉ cần nhập cái này vào vỏ git của bạn trên windows -> alias python='winpty python.exe' , đó là tất cả và bạn sẽ có bí danh cho python thực thi. Thưởng thức

PS Để thêm bí danh vĩnh viễn xem bên dưới,

cd ~
touch .bashrc

sau đó mở .bashrc, thêm lệnh của bạn từ phía trên và lưu tệp. Bạn cần tạo tệp thông qua bảng điều khiển hoặc bạn không thể lưu nó với tên thích hợp. Bạn cũng cần khởi động lại shell để áp dụng thay đổi.


17
Hoạt động như một lá bùa.
Màu xanh lá cây

4
Lưu ý: Bạn sẽ phải sử dụng hàm Python quit()để thoát khỏi trình thông dịch.
anishpatel

5
Bạn cũng có thể sử dụng (tiêu chuẩn windows) ^Z(ctrl-Z) + returnđể thoát.
Emil Styrke

6
Ngoài ra, nếu bạn muốn đặt bí danh thành một con trăn 'khác' so với cửa sổ, bạn có thể đặt đường dẫn đủ điều kiện đến nó bằng cú pháp saualias python='winpty /c/Python27/python.exe'
ScottMcC

10
Đây có thể là điều tốt nhất tôi từng tìm thấy trên internet.
mdw7326

79

Tôi không thấy tùy chọn tiếp theo trong danh sách các câu trả lời, nhưng tôi có thể nhận được lời nhắc tương tác với phím "-i":

$ python -i
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55)
Type "help", "copyright", "credits" or "license" for more information.
>>> 

đối số -i: Khi tập lệnh được truyền dưới dạng đối số đầu tiên hoặc tùy chọn -c được sử dụng, hãy vào chế độ tương tác sau khi thực thi tập lệnh hoặc lệnh, ngay cả khi sys.stdin không xuất hiện là thiết bị đầu cuối. Tệp PYTHONSTARTUP không được đọc. docs.python.org/3/USE/cmdline.html#cmdoption-i
Sao Thủy

Đây có phải là tốn kém hơn bí danh python = 'winpty python.exe' ?
PYK

1
đây là tùy chọn với nỗ lực cấu hình bằng không hoạt động trên bất kỳ máy tính nào.
vav

58

Đây là một lỗi đã biết trong MSys2, cung cấp thiết bị đầu cuối được sử dụng bởi Git Bash. Bạn có thể làm việc xung quanh nó bằng cách chạy bản dựng Python mà không cần hỗ trợ của ncurses hoặc bằng cách sử dụng WinPTY , được sử dụng như sau:

Để chạy chương trình bảng điều khiển Windows trong mintty hoặc Cygwin sshd, hãy thêm console.exe vào dòng lệnh:

$ build/console.exe c:/Python27/python.exe
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 + 20
30
>>> exit()

Các tệp nhị phân dựng sẵn cho msys có khả năng hoạt động với Git Bash. (Kiểm tra xem có phiên bản mới hơn không nếu thời gian đáng kể đã trôi qua kể từ khi câu trả lời này được đăng!).


Kể từ Git cho Windows 2.7.1, hãy thử sử dụng winpty c:Python27/python.exe; WinPTY có thể được bao gồm ngoài hộp.


2
Bạn có thể vui lòng, giải thích build/console.exe c:/Python27/python.exe- điều này có nên được chạy trong bảng điều khiển GitMsys hay bất kỳ cách nào khác không?
0leg

@ h3d0, vâng, bên trong thiết bị đầu cuối. Tất nhiên, điều này giả định rằng đó buildlà thư mục console.exenằm trong; cập nhật đường dẫn một cách thích hợp tùy thuộc vào vị trí / cách bạn thực sự cài đặt nó.
Charles Duffy

1
@ h3d0 Có, đây là phần mềm bổ sung; Câu trả lời của tôi bao gồm một liên kết.
Charles Duffy

7
Tôi nghĩ bạn có thể sử dụng nó như winpty c:/Python27/python.exe, mà không cần làm gì thêm. Tiện ích winpty.exe có thể được tìm thấy tại Git \ usr \ bin. Tôi đang sử dụng Git cho Windows v2.7.1
Xun Yang

1
@XunYang, ... winpty được đóng gói ngay bây giờ? Đẹp! Chỉnh sửa phù hợp.
Charles Duffy

47

Tôi là người dùng windows 10 và tôi đã cài đặt GIT trong hệ thống của mình bằng cách chấp nhận mặc định.

Sau khi đọc các câu trả lời ở trên, tôi đã nhận được 2 giải pháp cho riêng mình và 2 giải pháp này hoạt động hoàn hảo trên bash GIT và tạo điều kiện cho tôi thực hiện các câu lệnh Python trên GIT bash .

Tôi đang đính kèm 3 hình ảnh về GIT của tôi thiết bị đầu cuối bash . 1 với vấn đề và 2 sau là giải pháp.

VẤN ĐỀ - Con trỏ chỉ chờ sau khi nhấn pythonlệnh

nhập mô tả hình ảnh ở đây

GIẢI PHÁP 1

Thực hiện winpty <path-to-python-installation-dir>/python.exetrên thiết bị đầu cuối bash GIT .

Lưu ý: Không sử dụng C:\Users\Adminnhư kiểu đường dẫn trong bash GIT , thay vào đó hãy sử dụng /C/Users/Admin.

Trong trường hợp của tôi, tôi đã thực thi winpty /C/Users/SJV/Anaconda2/python.exelệnh trên GIT bash

Hoặc nếu bạn không biết tên người dùng của mình thì hãy thực thiwinpty /C/Users/$USERNAME/Anaconda2/python.exe

nhập mô tả hình ảnh ở đây

GIẢI PHÁP 2

Chỉ cần gõ python -ivà đó là nó.

nhập mô tả hình ảnh ở đây

Cảm ơn.


2
Tôi thấy rằng winptynó cũng sẽ hoạt động với Windows Python Launcher, vì vậy tất cả những gì bạn cần là ví dụ: alias py='winpty py'trong .bashrc của bạn và sau đó trở lại bình thường.
Karl Knechtel

Vâng, đó là tùy thuộc vào bạn, làm thế nào để bạn quản lý mọi thứ để làm cho cuộc sống của bạn tốt hơn.
hygull

9

Hãy thử python -ithay vì python, đó là một điều con trỏ.


8

Ngoài câu trả lời của @ Charles-Duffy, bạn có thể sử dụng winpty trực tiếp mà không cần cài đặt / tải xuống bất cứ thứ gì thêm. Chỉ cần chạywinpty c:/Python27/python.exe . Tiện ích winpty.exe có thể được tìm thấy tại Git \ usr \ bin. Tôi đang sử dụng Git cho Windows v2.7.1

Các tệp nhị phân dựng sẵn từ @ Charles-Duffy là phiên bản 0.1.1 (theo tên tệp), trong khi tệp nhị phân là 0.2.2


8

Git Bash Workaround- Khởi chạy Python 2 & Python 3 với bí danh

HI . Đây là (đối với tôi) giải pháp tốt nhất để chạy cả Python (Python 2.7 và Python 3.x) trực tiếp từ Git Bash trên Win 10 => thêm bí danh vào tệp bí danh mà Git Bash sử dụng.

Git Bash bí danh tập tinaliases.sh . Nó nằm tại:

C:\path where you installed Git\etc\profile.d\aliases.sh

1) Mở (với trình soạn thảo văn bản như Atom hoặc khác) bí danh.sh

ví dụ: trong trường hợp của tôi , tập tin nằm trong C:\Software\Develop\Git\etc\profile.d\aliases.sh

2) Thêm bí danh của bạn cho Python

Trong trường hợp của tôi , python.exe được cài đặt trong:

C:\Networking\Network Automation\Python 2.7\python.exe
C:\Networking\Network Automation\Python 3.7\python.exe

Vì vậy, bạn phải tạo 2 bí danh, một cho Python 2 ( tôi đặt tên là python2 ) và một cho Python 3 ( tôi đặt tên chỉ là python ) Git Bash sử dụng cấu trúc tệp linux để bạn cần thay đổi "\" cho "/" và nếu bạn có một đường dẫn như ví dụ Tự động mạng của tôi, bạn đặt nó với ""

"Tự động hóa mạng" , ví dụ:

winpty là lệnh ma thuật sẽ gọi thực thi.

Vì vậy, thêm các dòng này vào đầu aliases.sh

alias python2='winpty C/Networking/"Network Automation"/"Python 2.7"/python.exe'
alias python='winpty C/Networking/"Network Automation"/"Python 3.7"/python.exe'

3) Thêm hoặc sửa đổi các bí danh khác (nếu bạn muốn)

Tôi cũng đã sửa đổi bí danh ll để hiển thị tất cả các tệp và trong danh sách có thể đọc được của con người:

alias ll='ls -lah'

4) Lưu tệp aliases.sh


5) OK !!! đóng và khởi chạy lại Git Bash của bạn

Bây giờ, vĩnh viễn bạn có thể khởi chạy cả Python trực tiếp từ shell Git chỉ cần viết

$ python -> khởi chạy Python 3

$ python2 -> khởi chạy Python 2

$ ll -> nhập ls-nhớ để hiển thị nhanh danh sách tệp chi tiết của bạn

Chúc mừng, Harry


5

Bạn có thể thay đổi mục tiêu cho phím tắt Git Bash từ:

"C:\Program Files\Git\git-bash.exe" --cd-to-home 

đến

"C:\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i

Đây là cách ConEmu sử dụng để bắt đầu git bash (phiên bản 16). Phiên bản gần đây khởi động bình thường và đó là cách tôi đến đó ...


Điều này làm việc cho tôi. Đáng chú ý những gì các đối số bash.exe làm gì? man page nói -l: Tạo bash hoạt động như thể nó đã được gọi dưới dạng shell đăng nhập , -i: Nếu có các tùy chọn -i, shell sẽ tương tác
Ngày

Tôi đã từng có ConEmu hoạt động tốt mà không cần winpty trước đây và tôi hoàn toàn quên mất những gì tôi đã làm. Cảm ơn điều này đã làm việc như trước đây!
chaz

5

gõ: 'winpty python' và nó sẽ hoạt động

gitbash có một số vấn đề khi chạy bất kỳ lệnh nào bắt đầu với python. điều này cũng đúng với mọi lệnh quản lý python. Luôn luôn bắt đầu với 'winpty python Manage.py' Ít nhất đây là những gì phù hợp với tôi. Chạy Windows 10.


2

Ngoài câu trả lời @Vitaliy Terziev

thử touch .bash_profilevà sau đó thêm bí danh vào tập tin.


1
Tôi đã sử dụng .bashrc, nhưng khi tôi mở Git Bash, tôi nhận được một thông báo cảnh báo rằng bashrc tồn tại w / oa .bash_profile. Tôi đã đổi tên .bashrc thành .bash_profile và bây giờ cảnh báo đã biến mất. Cảm ơn.
JustinDanielson

2

2 cách giải quyết, thay vì một giải pháp: Trong Git Bash của tôi, lệnh sau bị treo và tôi không nhận được lời nhắc lại:

% python

Vì vậy, tôi chỉ sử dụng:

% winpty python

Như một số người đã lưu ý ở trên, bạn cũng có thể sử dụng:

% python -i

.


1

Tôi đang sử dụng MINGW64 thông qua Visual Studio Code trên Windows 10 và đang cố gắng cài đặt node-sass(yêu cầu python2). Tôi đã theo dõi felixrieseberg / windows-build-tools # 56 trên Github để giải quyết vấn đề của tôi.

Đây là một trường hợp đặc biệt, nhưng tôi sẽ đăng trong trường hợp ai đó có cùng một vấn đề:

npm --add-python-to-path='true' --debug install --global windows-build-tools

Điều này cài đặt python và các công cụ xây dựng cần thiết khác để %USERPROFILE%\.windows-build-tools\python27.


1

Đối với phiên bản python 3.7.3 trong vscode với gitbash là thiết bị đầu cuối mặc định tôi đã xử lý vấn đề này trong một thời gian và sau đó làm theo lời khuyên của @Vitaliy Terziev về việc thêm bí danh vào .bashrc nhưng với thông số sau:

bí danh python = 'xông / c / Người dùng / tên người dùng của tôi / AppData / Local / Programs / Python / Python37 / python.exe tựa'

Lưu ý sự kết hợp của dấu ngoặc đơn và dấu ngoặc kép vì tên người dùng của tôi không gian tên của tôi.

Đối với tôi, "winpty" không thể giải quyết đường dẫn python trong vscode.


0

Một ví dụ khác về vấn đề này là sử dụng giao diện dòng lệnh AWS Elastic Beanstalk (awsebcli, eb cli) từ git bash (MINGW64, Mintty) trong windows (sử dụng phiên bản git 2.19.0.windows.1).

Tôi chỉ đăng bài này vì tôi phải mất một thời gian để kết thúc ở đây, tìm kiếm eb-cli các vấn đề cụ thể.

Các lệnh như eb inithoặc eb config save, yêu cầu đầu vào của người dùng, xuất hiện để đóng băng / treo. Trong thực tế, tôi đoán rằng giao diện điều khiển không được cập nhật với văn bản yêu cầu người dùng nhập liệu. Hơn nữa, eb deploychỉ cập nhật văn bản giao diện điều khiển sau khi lệnh kết thúc, vì vậy tôi không được xem cập nhật tiến độ cho đến khi hoàn thành.

Như đã đề cập trong git cho các ghi chú phát hành windows (cho v2.19.0) và ví dụ như trong câu trả lời của Xun Yang , một cách giải quyết là chạy

winpty eb <command>(thay vì chỉ eb <command>)

Một giải pháp thay thế, như được đề xuất trong vấn đề git cho windows này , có thể là sử dụng bảng điều khiển riêng của windows thay vì mintty (tùy chọn trong khi cài đặt git).


0

Câu trả lời cho tôi được đề cập trước đó trong các câu trả lời tuyệt vời ở trên là bí danh như sau: (Tôi đang sử dụng anaconda, vì vậy trước tiên hãy tìm đường dẫn của con trăn, sau đó thêm nó vào bí danh trên git bash). 1. trên thiết bị đầu cuối anaconda tôi chạy:where python 2. trên git bash tôi chạy: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3. Xong. Python được định nghĩa bên trong Bash git bằng bí danh.

Cảm ơn (Vitaliy Terziev & hygull) vì những câu trả lời rất hữu ích của họ.


0
  1. python.exe -ihoạt động nhưng gặp sự cố khi thoát khỏi chế độ tương tác bằng cách gửi "^ Z" (CTRL + Z). Vì vậy, có vẻ tốt hơn để sử dụng winpty python.exetrong Git Bash cho Windows.

  2. Sử dụng ~/binthư mục để tạo tệp bọc / tham chiếu (như ~/bin/python) sẽ có thể truy cập ở mọi nơi (bạn có thể sử dụng tham chiếu phiên bản khác nhau như ~/bin/python37).
    Mã bên trong tệp:

#!/usr/bin/env bash
# maybe declare env vars here like
# export PYTHONHOME=/c/Users/%USERNAME%/.python/Python36
# export PATH="${PATH}:/c/Users/%USERNAME%/.python/Python36"

# replace %USERNAME%,
# or use "~" instead of "/c/Users/%USERNAME%" if it works
winpty /c/Users/%USERNAME%/.python/Python36/python.exe ${@}

Tôi chỉ không thích những bí danh "ma thuật" mà bạn luôn quên nó đến từ đâu, và đôi khi dẫn đến các vấn đề trong một số trường hợp.

  1. Sử dụng ~/bin/pythontệp và -itham số:
#!/usr/bin/env bash
if [ -z "${@}" ]; then
    # empty args, use interactive mode
    /c/Users/%USERNAME%/.python/Python36/python.exe -i
else
    /c/Users/%USERNAME%/.python/Python36/python.exe ${@}
fi

19480756 [sig] bash 2740! sigpacket::process: Suppressing signal 18 to win32 process (pid 14820)- ví dụ phản hồi sau khi gửi ^Zvới chế độ tương tác được chạy bởipython.exe -i
Kirby

0

Nhập lệnh PY thay vì Python. Gọi Trình thông dịch (python.org).


-2

Hãy xem câu trả lời này:

Git Bash sẽ không chạy các tập tin python của tôi?

đường dẫn trong Git Bash nên được đặt như thế này:

PATH=$PATH:/c/Python27/

2
Thật ra ... không! Tôi có thể tái tạo vấn đề của OP và python được tìm thấy trong PATH mà không gặp vấn đề gì. Xem sourceforge.net/p/msys2/tickets/32
Charles Duffy

Bài đăng của OP cho thấy rằng PATH không phải là vấn đề.
Hilton Shumway
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.