“Quyền bị từ chối” khi cố gắng chạy Python trên Windows 10


108

Có vẻ như một bản cập nhật trên Windows 10 đã phá vỡ Python. Chỉ cố gắng chạy đã python --versiontrả về lỗi "Quyền bị Từ chối". Không có bản cập nhật nào trong ba bản cập nhật; KB4507453, KB4506991 hoặc KB4509096 có vẻ như chúng sẽ là thủ phạm nhưng thời gian của vấn đề là đáng ngờ. Thay vì lộn xộn với việc quay trở lại, tôi hy vọng có một cách sửa chữa đơn giản hơn mà tôi đang thiếu.

Các quyền trên python là "-rwxr-xr-x" và tôi không thay đổi bất cứ điều gì ngoài việc để máy cập nhật Windows khởi động lại sau khi cài đặt các bản vá lỗi đêm qua.

Theo Thông tin hệ thống, tôi đang chạy 10.0.18362

Cũng nên lưu ý rằng điều này đang xảy ra cho dù tôi (cố gắng) thực thi Python từ git-bash bằng cách sử dụng "run as administrator" hay không và nếu tôi thử sử dụng PowerShell, nó chỉ mở cửa hàng Windows như thể ứng dụng chưa được cài đặt. Tôi nghĩ rằng nó không thể nhìn thấy nội dung trong /c/Users/david/AppData/Local/Microsoft/WindowsApps/thư mục của tôi vì một số lý do.

Tôi cũng đã cố gắng cài đặt lại Python 3.7.4, nhưng điều đó cũng không giúp được gì. Có điều gì khác mà tôi nên xem xét?


Có lẽ đáng để kiểm tra trang web của Microsoft. Tôi đọc ở đâu đó, xin lỗi không thể nhớ ở đâu, rằng những người khác đã gặp sự cố với bản cập nhật này - tôi nghĩ là màn hình trống. Dù sao, chờ đợi cho đến khi họ sửa chữa nó trong một hoặc hai ngày có thể trở thành câu trả lời.
Ant

BTW, "quyền trên python là '-rwxr-xr-x'" có lẽ là vô nghĩa trong Windows. Đó là thứ giả mạo được báo cáo bởi một môi trường giống Unix như MSYS2 hoặc git-bash.
Eryk Sun

Không. Đây là gói Python từ python.org. Tương tự trên đó đã hoạt động trong nhiều năm mà không gặp bất kỳ sự cố nào và chỉ bắt đầu hoạt động với bản vá Windows mới nhất.
notanumber

Bạn đã tìm thấy một giải pháp? Tôi có cùng một vấn đề.
Shanks

Tiếc là không có. Tôi đã sống với nó khi tôi làm hầu hết công việc của mình trong Docker. Nếu tôi làm vậy, tôi chắc chắn sẽ đăng những phát hiện của mình!
notanumber

Câu trả lời:


178

Theo như tôi có thể nói, điều này là do xung đột với phiên bản Python 3.7 mà gần đây đã được thêm vào Windows Store. Có vẻ như điều này đã thêm hai "gốc" được gọi là python.exe và python3.exe vào %USERPROFILE%\AppData\Local\Microsoft\WindowsAppsthư mục và trong trường hợp của tôi, điều này đã được chèn trước mục nhập tệp thực thi Python hiện có của tôi trong PATH.

Di chuyển mục nhập này bên dưới thư mục Python chính xác (một phần) đã khắc phục sự cố.

Phần thứ hai của việc sửa lỗi là nhập manage app execution aliasesvào lời nhắc tìm kiếm của Windows và tắt hoàn toàn các phiên bản lưu trữ của Python.

quản lý bí danh thực thi ứng dụng

Có thể bạn chỉ cần làm phần thứ hai, nhưng trên hệ thống của mình, tôi đã thực hiện cả hai thay đổi và mọi thứ hiện trở lại bình thường.


47
(Nhân viên của Microsoft và nhà phát triển cốt lõi của CPython ở đây) Bạn chắc chắn chỉ cần làm phần thứ hai. Đã có một số lỗi liên quan đến việc nâng cấp ứng dụng đặt lại bí danh sẽ được khắc phục trong bản cập nhật ổn định tiếp theo, vì vậy nó sẽ là bản sửa lỗi một lần sau đó. Trong khi nhận được các bản cập nhật của Người dùng nội bộ, bạn có thể cần phải thực hiện thêm vài lần nữa.
Zooba

7
Ngoài ra, vấn đề "Truy cập bị Từ chối" là lỗi Git Bash (hoặc bất kỳ ai duy trì cổng Bash của họ ... Tôi không chắc bản thân mình đó là lỗi của ai). Và khởi chạy Cửa hàng là một tính năng mới để giúp mọi người cài đặt Python - nếu bạn đã thêm nó vào PATH bằng trình cài đặt thông thường, nó sẽ được ưu tiên hơn trình chuyển hướng mới, nhưng nếu bạn chưa biết cách tắt nó ở trên.
Zooba

4
Tôi chỉ cần đến phần thứ hai để khắc phục sự cố này cho tôi.
kennyB

5
Đối với tôi, tôi cũng phải thêm python vào đường dẫn của mình (C: \ Users \ YourUsernameHere \ AppData \ Local \ Programs \ Python \ Python37) để git bash tìm python
Niels

1
Thêm nó vào đường dẫn của tôi và chuyển nó lên đầu là giải pháp của tôi, giống như Neils đã làm. Thực tế là tôi không thể chỉ đổi tên sơ khai cho sơ khai cửa hàng windows khá khó chịu.
John W. Clark

23

Nghiên cứu

Tất cả các tệp trong %USERPROFILE%\AppData\Local\Microsoft\WindowsAppslà trình giữ chỗ trỏ đến các tệp thực sự nằm ở đâu đó C:\Program Files\WindowsApps, điều này sẽ xảy ra bị từ chối hoàn toàn quyền.

Có vẻ như tôi đã đi đúng hướng với tuyên bố của tôi được đưa ra trong bản sao của vấn đề này:

"Có vẻ như họ không thực sự nghĩ về phương pháp phân phối bắt vít với quyền!"

Nguồn: Không thể cài đặt pylint trong Git Bash trên Windows (Windows Store)

Quyền bị rối loạn một cách hoàng gia do phương pháp phân phối WindowsApps:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây Điều thú vị là nhóm "Người dùng" có thể đọc và thực thi tệp, cũng như người dùng cụ thể của tôi, nhưng nhóm Quản trị viên chỉ có thể Liệt kê nội dung thư mục vì một số lý do vui nhộn khó hiểu. Và khi cố gắng truy cập vào thư mục trong File Explorer, nó thậm chí từ chối hiển thị nội dung thư mục, vì vậy cũng có điều gì đó khó hiểu về điều đó.

Điều thú vị là mặc dù việc thực thi pythontrong CMD hoạt động tốt, nhưng thư mục "WindowsApps" không hiển thị khi liệt kê các tệp trong thư mục mà nó nằm trong đó và việc cố gắng điều hướng vào thư mục sẽ tạo ra lỗi "Quyền bị từ chối":

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

Việc cố gắng thay đổi quyền yêu cầu thay đổi chủ sở hữu trước tiên, vì vậy tôi đã thay đổi chủ sở hữu thành nhóm Quản trị viên. Sau đó, tôi đã cố gắng thay đổi các quyền cho nhóm Quản trị viên để bao gồm Toàn quyền, nhưng không thể thay đổi điều này, vì "quyền truy cập đã bị từ chối" (duh, Micro $ ucks, đó là những gì chúng tôi đang cố gắng thay đổi!).

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

Lỗi quyền này đã xảy ra cho rất nhiều tệp nên tôi đã sử dụng Alt + C để nhanh chóng nhấp vào "Tiếp tục" trên các thông báo lặp lại, nhưng quá trình này vẫn mất quá nhiều thời gian, vì vậy tôi đã hủy quá trình, dẫn đến thông báo cảnh báo này xuất hiện:

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

Và bây giờ tôi không thể đặt người dùng TrustedInstaller trở lại làm chủ sở hữu của thư mục WindowsApps vì nó không hiển thị trong danh sách Người dùng / Nhóm / Nguyên tắc bảo mật tích hợp / Đối tượng khác. *

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

* Trên thực tế, theo hướng dẫn này , bạn có thể hoán đổi chủ sở hữu trở lại TrustedInstaller bằng cách nhập NT Service\TrustedInstallervào hộp văn bản tên đối tượng.

Giải pháp

Không có giải pháp. Về cơ bản, chúng tôi đã hoàn toàn vặn vẹo. Động thái đẳng cấp, Microsoft.


11
(Nhân viên của Microsoft và nhà phát triển cốt lõi của CPython tại đây) Có một lỗi ngay bây giờ tôi đang cố gắng khắc phục lỗi trong Windows, nơi bạn có thể khởi chạy tệp thực thi ở vị trí này nhưng chỉ khi bạn đã bật bí danh chung (trong bí danh Quản lý thực thi ứng dụng). Tôi đang cố gắng thay đổi nó để bạn chỉ cần cài đặt ứng dụng cho người dùng hiện tại.
Zooba

4
Chúng tôi có thể đọc các quyền thông qua hộp thoại này vì nó thuộc sở hữu của một phiên bản dllhost.exe (lưu trữ phần mở rộng shell bảo mật, rshx32.dll) đang chạy với quyền truy cập của quản trị viên và do đó có quyền truy cập "nội dung thư mục danh sách" (tức là thực thi; đồng bộ hóa; và đọc dữ liệu, thuộc tính và quyền). Mục nhập cho nhóm người dùng không phải để kiểm tra quyền truy cập thông thường. Nó có điều kiện dựa trên sự tồn tại của thuộc tính bảo mật WIN: // SYSAPPID, tức là bất kỳ ứng dụng nào. Thư mục con cho mỗi ứng dụng cấp quyền truy cập đọc cho người dùng, nhưng quyền truy cập thực thi có điều kiện để chạy qua liên kết ứng dụng đặt mã thông báo truy cập tùy chỉnh.
Eryk Sun

@ErykSun Đó là câu trả lời được thông báo đầu tiên mà tôi từng thấy về việc thực thi và các quyền của windows. Cảm ơn.
Ryan

Tôi thực sự vẫn đang đối phó với sự cố do cố gắng thay đổi quyền trên thư mục. Một số WinApp nhất định đã ngừng khởi chạy hoàn toàn, cho đến khi tôi làm theo các hướng dẫn sau: ( superuser.com/questions/1288014/… ) nhưng bây giờ chúng đưa ra thông báo lỗi khi khởi chạy. Tôi đã sử dụng hình ảnh USB Win10 cũ hơn nên có thể nó đã đặt quyền không chính xác.
Ryan

1
@MarkSimpson rất vui vì chủ đề này đã giúp ích. Không chắc những gì tôi có thể đã viết. Hãy chắc chắn cảm ơn các nhân viên của Microsoft đã đăng câu trả lời thực sự trong các bình luận tại đây.
Ryan


10

Vấn đề này quá phổ biến nên vẫn còn tồn tại. Và hầu hết các câu trả lời và hướng dẫn không giải quyết được nó. Đây là những việc cần làm trên Windows 10:

  1. Nhập environment variablesvào thanh tìm kiếm bắt đầu và mở Chỉnh sửa các biến môi trường hệ thống .

  2. Nhấp vào Biến môi trường ...

  3. Trong phần Biến hệ thống, định vị biến bằng khóa Pathvà nhấp đúp vào biến đó.

  4. Tìm các đường dẫn trỏ đến tệp python. Có vẻ như không có. Nếu có, hãy chọn và xóa chúng.

  5. Tạo một biến mới được đặt thành đường dẫn đến tệp thực thi python của bạn. Bình thường là như vậy C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. Đảm bảo điều này bằng cách kiểm tra qua File Explorer của bạn.

    Lưu ý : Nếu bạn không thể thấy AppData, đó là do bạn chưa bật chế độ xem các mục bị ẩn : hãy nhấp vào tab Xem và đánh dấu vào hộp kiểm Các mục ẩn.

  6. Tạo một biến khác trỏ đến Scriptsthư mục. Điển hình là nó C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts.

  7. Khởi động lại thiết bị đầu cuối và thử bạn gõ py, python, python3, hoặc python.exe.


4

Đó không phải là giải pháp với PowerShell, nhưng tôi đã gặp vấn đề tương tự ngoại trừ với MINGW64. Tôi đã vượt qua nó bằng cách chuyển sang Hệ thống con của Windows cho Linux (dù sao tôi cũng muốn làm) làm thiết bị đầu cuối của mình, nói chung và trong VSCode. Bài đăng này mô tả nó tốt:

Cách cấu hình Mã VS (cửa sổ) để sử dụng Ứng dụng Ubuntu làm thiết bị đầu cuối

Tóm tắt:

1) Cài đặt Ubuntu từ Windows App Store

2) Thay đổi bash mặc định từ CMD -> wslconfig / setdefault Ubuntu

--- Đối với VSCode

3) Khởi động lại VSCode

4) Trong VSCode thay đổi "terminal.integrated.shell.windows" thành "C: \ WINDOWS \ System32 \ bash.exe" (để biết thêm chi tiết, hãy xem bài đăng ở trên)

Hiện đang chạy trơn tru trong VSCode và WSL (Bash trên Ubuntu trên Windows). Ít nhất có thể là một giải pháp tạm thời cho bạn.


3

Thêm Đường dẫn Python cục bộ trước khi WindowsApps giải quyết sự cố.

Biến môi trường> Đường dẫn

Bash Python --Version


1

Điều đơn giản nhất cần làm là sửa đổi các biến môi trường PATH và PYTHONPATH của bạn để đảm bảo rằng thư mục chứa mã nhị phân python thích hợp được tìm kiếm cho thư mục WindowsApp cục bộ. Bạn có thể truy cập các biến môi trường bằng cách mở bảng điều khiển và tìm kiếm "env"


0

Cách giải quyết: Nếu bạn đã cài đặt python từ exe, hãy làm theo các bước dưới đây.

Bước 1: Gỡ cài đặt python

Bước 2: Cài đặt python và chọn hộp kiểm đường dẫn Python như được đánh dấu trong screentshot bên dưới (màu vàng).

Điều này đã giải quyết cho tôi vấn đề.

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


-1

Có thể bạn có thể thử mở dấu nhắc lệnh với đặc quyền của Quản trị viên. (Chạy như quản trị viên). Làm việc cho tôi hầu hết thời gian.


3
Tập tin thực thi python hoạt động trong CMD ngay cả khi không có đặc quyền của Quản trị viên. Vấn đề là nó không hoạt động trong Git Bash, một công cụ cần thiết cho các lập trình viên và là công cụ mặc định, và nó hoạt động với mọi phương thức phân phối khác cho Python, có nghĩa là nó cũng phải hoạt động ở đây.
Ryan

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.