PyCharm hiển thị lỗi tham chiếu chưa được giải quyết cho mã hợp lệ


277

Tôi đang sử dụng PyCharm để làm việc trong một dự án. Dự án được mở và cấu hình với một trình thông dịch, và có thể chạy thành công. Các đường dẫn thông dịch từ xa được ánh xạ đúng. Đây có vẻ là cấu hình chính xác, nhưng PyCharm đang làm nổi bật mã hợp lệ của tôi với các lỗi "tham chiếu chưa được giải quyết", ngay cả đối với các hàm Python tích hợp. Tại sao những thứ này dường như không được phát hiện, mặc dù mã chạy? Có cách nào để PyCharm nhận ra những điều này một cách chính xác không?


Ví dụ cụ thể của vấn đề này là với một trình thông dịch từ xa, nhưng vấn đề cũng xuất hiện trên các thông dịch viên cục bộ.


Tôi có cùng một vấn đề và xử lý nó. Đây là giải pháp .
Maks

Câu trả lời:


443

Tập tin | Bộ nhớ cache không hợp lệ ... và khởi động lại PyCharm giúp.


3
Đây là cách duy nhất để làm việc trên PyCharm 4.0.x trong trường hợp của tôi. Thực tế là nếu một cái gì đó bị hỏng và nó không làm mới (đôi khi nó thậm chí còn hiển thị cùng một trình thông dịch lặp đi lặp lại nhiều lần trong danh sách) bạn sẽ phải xóa các tệp theo cách thủ công ... Tôi thậm chí đã phải xóa các thư mục .idea một lần .
danius

10
Điều này là rất nặng. Có cách nào để lấy lại tùy chọn "đường dẫn làm mới" cũ trong PyCharm 4.5 không?
Chris Withers

6
Thật là khó chịu khi một IDE như vậy không chăm sóc một hoạt động đơn giản như vậy.
Eduardo Pignatelli

3
Nó hoạt động trong giây lát. Sau vài phút, tôi lại nhận được cảnh báo tương tự
Aseem

132

Phản ứng của Dmitry đã không làm việc cho tôi.

Tôi đã làm việc với tôi bằng cách đi tới Trình thông dịch dự án, chọn tab "Đường dẫn" và nhấn nút làm mới trong menu con đó. Nó tự động điền vào một thứ gọi là "python-skeletons".

chỉnh sửa : ảnh chụp màn hình bằng PyCharm 3.4.1 (nó được ẩn khá tốt)

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


6
"Thông dịch viên Python" ở đâu. Bạn có nghĩa là "Thông dịch viên dự án"? Tôi đang sử dụng Linux và tôi cũng không thể tìm thấy tab Đường dẫn.
Baskaya

1
Trong PyCharm 3.4 trên OSX, đó là một biểu tượng trông giống như một cây thư mục nhỏ và không nói "Đường dẫn".
Daniel Bushman

12
Đối với bất kỳ ai vẫn còn bối rối (trong PyCharm 3.4.1):Settings > Project Settings > Project Interpreter > Project Interpreters (gear button > more) > --Select the interpreter-- > Interpreter Paths (Directory Tree button on the right) > Reload List of Paths (Blue refresh-like button)
raphaeltm

5
Không có nút làm mới như vậy trong PyCharm 4, chỉ có dấu cộng và dấu trừ.
dtheodor 7/1/2015

3
@Sarah Trong PyCharm 4.0.4, trong cửa sổ "Đường dẫn thông dịch", tôi không có nút "tải lại danh sách các đường dẫn" (biểu tượng làm mới màu xanh lam phía dưới). Ngoài ra, tôi không thấy bất kỳ đường dẫn nào trong danh sách và các nút cộng và trừ bị tắt.
Henrik Heimbuerger

70

Có nhiều giải pháp cho vấn đề này, một số tiện lợi hơn những giải pháp khác và chúng không phải lúc nào cũng hoạt động.

Đây là tất cả những gì bạn có thể thử, đi từ 'nhanh' đến 'khó chịu':

  • Làm File-> Invalidate Caches / Restartvà khởi động lại PyCharm.
    • Bạn cũng có thể làm điều này sau bất kỳ phương pháp nào dưới đây, chỉ để chắc chắn.
  • Trước tiên, hãy kiểm tra trình thông dịch nào bạn đang chạy: Run-> Edit Configurations-> Configuration-> Python Interpreter.
  • Làm mới đường dẫn của trình thông dịch của bạn:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Trình thông dịch dự án': Biểu tượng bánh răng ->More...
    • Nhấp vào nút 'Hiển thị đường dẫn' (dưới cùng)
    • Nhấp vào nút 'Làm mới' (dưới cùng)
  • Xóa trình thông dịch và thêm lại:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Trình thông dịch dự án': Biểu tượng bánh răng ->More...
    • Nhấp vào nút 'Xóa'
    • Nhấp vào nút 'Thêm' và thêm lại trình thông dịch của bạn
  • Xóa tùy chọn dự án của bạn
    • Xóa .ideathư mục dự án của bạn
    • Đóng và mở lại PyCharm
    • Mở dự án của bạn từ đầu
  • Xóa tùy chọn người dùng PyCharm của bạn (nhưng sao lưu chúng trước).
    • ~/.PyCharm50 trên máy Mac
    • %homepath%/.PyCharm50 trên Windows
  • Chuyển sang trình thông dịch khác, sau đó quay lại với trình thông dịch bạn muốn.
  • Tạo một môi trường ảo mới và chuyển sang trình thông dịch của môi trường đó.
  • Chuyển sang một thông dịch viên khác hoàn toàn, không chuyển trở lại.

Tôi đã gặp phải vấn đề này miễn là tôi đã sử dụng PyCharm và họ vẫn không thể sửa nó một cách đáng tin cậy. Điều tốt là bạn đã bao quát hầu hết các công việc xung quanh bằng cách này hay cách khác kết thúc việc khắc phục vấn đề. Thật buồn cười khi thỉnh thoảng tôi quay lại câu trả lời này để tìm ra những công việc xung quanh tôi đã quên thử.
Alex

3
Tôi đã tìm ra danh sách này và loại bỏ / thêm lại trình thông dịch làm việc cho tôi. Cảm ơn!
Đánh dấu

16

Trong trường hợp của tôi đó là cấu trúc thư mục. Dự án của tôi trông như thế này:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

Vì vậy, nhấp chuột phải vào dir_b> "đánh dấu thư mục là"> "dự án gốc"


2
Câu hỏi không phải là PyCharm không nhận ra mã dự án . Nó không nhận ra các phương thức tích hợp Python tiêu chuẩn.
florisla

Đã giải quyết vấn đề của tôi trên PyCharm 2019.3.3 trên MacOS
samisnotinsane

11

Tôi thấy mình đã xóa và thêm lại trình thông dịch từ xa để khắc phục sự cố này khi Vô hiệu hóa bộ đệm hoặc Đường dẫn làm mới không hoạt động.

Tôi sử dụng vagrant và cứ sau một thời gian nếu tôi thêm một VM mới vào thiết lập multi-vm của mình, cổng chuyển tiếp thay đổi và điều này dường như gây nhầm lẫn cho PyCharm khi nó cố sử dụng cổng sai cho SSH. Thay đổi cổng dường như không giúp các tài liệu tham khảo bị hỏng.


10

Nếu không có giải pháp nào khác phù hợp với bạn, hãy thử (sao lưu) và xóa thư mục ~ / .PyCharm40 của bạn, sau đó mở lại PyCharm. Điều này sẽ giết tất cả các sở thích của bạn là tốt.

Trên máy Mac, bạn muốn xóa ~ / Library / Caches / Pycharm40 và ~ / Library / Preferences / PyCharm40.

Và trên Windows: C: \ Users \ $ USER.PyCharm40.


10

Đã thử nghiệm với PyCharm 4.0.6 (OSX 10.10.3) theo các bước sau:

  1. Nhấp vào menu PyCharm.
  2. Chọn Thông dịch viên dự án.
  3. Chọn biểu tượng bánh răng.
  4. Chọn nút khác.
  5. Chọn Thông dịch viên dự án bạn đang ở.
  6. Chọn nút Cây thư mục.
  7. Chọn Tải lại danh sách các đường dẫn.

Vấn đề được giải quyết!


8

rất dễ

bạn chỉ cần đánh dấu thư mục gốc của mình là: SOURCE ROOT (màu đỏ) và các ứng dụng của bạn: EXCLUDED ROOT (màu xanh),

sau đó tham chiếu chưa được giải quyết sẽ biến mất.

  • nhập mô tả hình ảnh ở đâynếu bạn sử dụng PyChram pro, nó sẽ tự động làm điều này cho bạn.

5
Tôi có pycharm pro và nó không làm điều này cho tôi nhưng sau khi tôi tự đánh dấu các thư mục một cách chính xác thì nó đã hoạt động
Jose

6

Xin lỗi để trả lời câu hỏi này, tuy nhiên tôi có một bản cập nhật quan trọng để thực hiện.

Bạn cũng có thể muốn hoàn nguyên trình thông dịch dự án của mình thành Python 2.7.6 nếu bạn đang sử dụng bất kỳ phiên bản nào khác ngoài phiên bản này.


1
Chuyển sang trình thông dịch Python 2 cục bộ và sau đó quay lại trình thông dịch Python 3 từ xa của bạn cũng đã sửa lỗi này cho tôi.
James Fletcher

Điều này hoạt động trên PyCharm 5 chuyên nghiệp là tốt. Không có giải pháp nào khác trong bài viết này đã làm việc cho tôi. Tôi đi vào Settings -> "Project Interpreters", nhấp vào thiết bị, và sau đó "More...". Chọn trình thông dịch python mặc định ( /usr/bin/python2.7trong trường hợp của tôi), nhấn "Ok""Apply". Sau đó quay trở lại và chọn virtualenv thực tế tôi muốn sử dụng. "Ok""Apply"một lần nữa, và nó đã được sửa.
Josh

Tương tự FileNotFoundErrorlà một thứ chỉ có Python-3. Sau khi tôi đặt trình thông dịch chính xác trong cả Tệp-Cài đặt-Dự án-Trình thông dịch và Chạy-Chỉnh sửa-Cấu hình, một trong những lỗi đó đã biến mất.
Bob Stein

3

Bạn có thể thử đóng Pycharm, xóa .ideathư mục khỏi dự án của bạn, sau đó bắt đầu lại Pycharm và tạo lại dự án. Điều này làm việc cho tôi trong khi bộ nhớ cache vô hiệu hóa thì không.


2

Cuối cùng tôi đã làm việc này sau khi không có giải pháp đề xuất nào phù hợp với tôi. Tôi đã chơi với một dự án khung phần mềm django và đang sử dụng một virtualenv tôi đã thiết lập với nó. Tôi đã có thể sửa lỗi Pycharm bằng cách đánh dấu thư mục gốc là gốc nguồn, nhưng sau đó máy chủ của django sẽ giải quyết các ngoại lệ. Vì vậy, một người sẽ làm việc khi người kia sẽ không và ngược lại.

Cuối cùng, tôi chỉ phải đánh dấu thư mục con là nguồn gốc trong pycharm. Vì vậy, cấu trúc của tôi là như thế này

-playground
     -env
     -playground

Thư mục sân chơi thứ hai đó là thư mục tôi phải đánh dấu là nguồn gốc để mọi thứ hoạt động như mong đợi. Điều đó đã không trình bày bất kỳ vấn đề nào cho kịch bản của tôi vì vậy đó là một giải pháp khả thi.

Chỉ cần nghĩ rằng tôi sẽ chia sẻ trong trường hợp người khác có thể sử dụng nó.


2

Nó cũng có thể là một vấn đề phiên bản python. Tôi đã phải chọn đúng để làm cho nó hoạt động. nhập mô tả hình ảnh ở đây


2

Nếu bạn muốn bỏ qua chỉ một số lỗi "tham chiếu chưa được giải quyết", bạn cũng có thể nói rõ với PyCharm bằng cách đặt nó trước lớp / phương thức / hàm của bạn:

# noinspection PyUnresolvedReferences

1

Tôi đã đóng tất cả các dự án khác và điều hành dự án cần thiết của mình một cách cô lập ở Pycharm. Tôi đã tạo một virtualenv riêng từ pycharm và thêm tất cả các mô-đun cần thiết vào nó bằng cách sử dụng pip. Tôi đã thêm môi trường ảo này trong trình thông dịch của dự án. Điều này đã giải quyết vấn đề của tôi.


1

Geeze những gì một cơn ác mộng, sự hợp nhất của tôi về các câu trả lời StackOVerflow khác nhau:

  1. Chuyển sang trình thông dịch cục bộ /usr/bin/pythonX.X và áp dụng
  2. Xem các đường dẫn như câu trả lời ở trên
  3. Tìm đường dẫn bộ xương. Của tôi là (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Quay trở lại trình thông dịch virt và thêm đường dẫn bộ xương theo cách thủ công nếu nó không tự động hiển thị.

1

Không có giải pháp nào ở trên làm việc cho tôi!
Nếu bạn đang sử dụng môi trường ảo cho dự án của mình, hãy đảm bảo áp dụng python.exetệp trong thư mục môi trường ảo của bạn làm thông dịch viên cho dự án, (Alt + Ctrl + Shift + S) điều này đã giải quyết vấn đề cho tôi.


1

Trong trường hợp của tôi, lỗi kiểm tra xuất hiện do một trường hợp mã trăn rất cụ thể. Một hàm min chứa hai hàm numpy và hai lần truy cập danh sách làm cho việc kiểm tra mã của tôi đưa ra loại lỗi này.

Việc xóa dòng 'd = 0' trong ví dụ sau sẽ gây ra lỗi tham chiếu chưa được giải quyết như mong đợi, nhưng readding không làm cho lỗi này biến mất đối với trình kiểm tra mã. Tôi vẫn có thể thực thi mã mà không gặp vấn đề gì sau đó.

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

Xóa bộ nhớ cache và tải lại danh sách các đường dẫn không hoạt động. Chỉ thay đổi mã bằng một trong các bản vá ví dụ sau mới hoạt động:

  • Một thứ tự khác của các tham số 'min': sơ đồ SUTV nhưng không phải STUV hoặc TSUV
  • Sử dụng một phương thức thay cho hàm: S [d] .abs () thay vì np.abs (S [d])
  • Sử dụng hàm abs () tích hợp
  • Thêm một số vào một tham số lựa chọn: U [d] + 0.

1

Không có câu trả lời nào giải quyết được vấn đề của tôi.

Điều đã làm cho tôi là chuyển đổi môi trường và trở lại cùng một môi trường. File->Settings->Project interpreter

Tôi đang sử dụng môi trường conda.


1

Làm việc cho tôi với hành động đơn giản hơn nhiều :


File > Settings > Project > Project Interpreter 
> Select "No interpreter" in the "Project interpreter" list 
> Apply > Set your python interpreter again > Click Apply

Lợi nhuận - Pycharm đang cập nhật bộ xương và mọi thứ đều ổn.


0

Nếu bạn đang sử dụng vagrantlỗi có thể do trình thông dịch python sai. Trong chúng vagranttôi, chúng tôi đang sử dụng pyenvvì vậy tôi đã phải thay đổi Python Interpreter pathđường dẫn từ /usr/bin/pythonsang/home/vagrant/.pyenv/versions/vagrant/bin/python nhập mô tả hình ảnh ở đây


0

Tôi có một dự án trong đó một tệp src/nhập tệp khác trong cùng thư mục. Để nhận được PyCharm, tôi phải vào Tệp> Cài đặt> Dự án> Cấu trúc dự án> chọn srcthư mục và nhấp vào "Đánh dấu là: Nguồn"

Từ https://www.jetbrains.com/help/pycharm/configuring- Folders-within-a-content-rot.html

Nguồn gốc chứa các tệp nguồn và tài nguyên thực tế. PyCharm sử dụng nguồn gốc làm điểm khởi đầu để giải quyết nhập khẩu


0

Vấn đề của tôi là Flask-WTF không được PyCharm giải quyết . Tôi đã cố gắng cài đặt lại và sau đó cài đặt hoặc Vô hiệu hóa Bộ đệm và Khởi động lại PyCharm, nhưng nó vẫn không hoạt động.

Sau đó, tôi đã đưa ra giải pháp này và nó hoạt động hoàn hảo cho tôi.

  1. Mở Trình thông dịch dự án bằng Ctrl + Alt + S (Windows) và sau đó nhấp vào Cài đặt (+) một hành lý mới.

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

  1. Nhập gói không được PyCharm giải quyết và sau đó nhấp vào Cài đặt Gói . Sau đó bấm OK .

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

Bây giờ, bạn sẽ thấy thư viện của bạn đã được giải quyết.


-1

Bạn đang sử dụng virtualenv?

nếu vậy, bạn cần thông báo cho PyCharm về mọi thay đổi về vị trí của python.exe mong muốn (chỉ ./activate là không đủ cho PyCharm)

Đảm bảo Pycharm trỏ đến bộ chặn và gói chính xác: Tệp -> Cài đặt -> Dự án -> Trình thông dịch dự án. Nhấp vào thiết bị và chọn python.exe trong thư mục Sc Script của virtualenv

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

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.