PyCharm menunjukkan kesalahan referensi yang tidak terselesaikan untuk kode yang valid

279

Saya menggunakan PyCharm untuk mengerjakan suatu proyek. Proyek dibuka dan dikonfigurasikan dengan penerjemah, dan dapat berjalan dengan sukses. Jalur interpreter jarak jauh dipetakan dengan benar. Ini tampaknya konfigurasi yang benar, tetapi PyCharm menyoroti kode valid saya dengan kesalahan "referensi yang belum terselesaikan", bahkan untuk fungsi Python bawaan. Mengapa ini tidak terdeteksi, meskipun kodenya berjalan? Apakah ada cara untuk membuat PyCharm mengenali ini dengan benar?


Contoh spesifik masalah ini adalah dengan juru bahasa jarak jauh, tetapi masalahnya juga muncul pada penerjemah lokal.

James McCalden
sumber
Saya memiliki masalah yang sama dan menyentuhnya. Di sini solusinya .
Maks

Jawaban:

445

File | Batalkan Cache ... dan restart PyCharm membantu.

Dmitry Trofimov
sumber
3
Ini adalah satu-satunya cara bekerja pada PyCharm 4.0.x dalam kasus saya. Faktanya adalah jika ada sesuatu yang kacau dan itu tidak me-refresh (kadang-kadang bahkan menunjukkan penerjemah yang sama diulang beberapa kali dalam daftar) Anda harus menghapus file secara manual ... Saya bahkan harus menghapus folder .idea sekali .
danius
10
Ini sangat berat. Apakah tidak ada cara untuk mendapatkan kembali opsi "jalur penyegaran" di PyCharm 4.5?
Chris Withers
6
Sangat menjengkelkan karena IDE seperti itu tidak menangani operasi yang begitu sederhana.
Eduardo Pignatelli
3
Ini bekerja sebentar. Setelah beberapa menit saya mendapatkan peringatan yang sama lagi
Aseem
Jawaban yang diterima adalah kelas berat dan sangat mungkin tidak mengatasi inti masalahnya. Berikut adalah informasi langsung dari mulut kuda: JetBrains - PyCharm Content Root "PyCharm menggunakan akar sumber sebagai titik awal untuk menyelesaikan impor" Saya memiliki masalah persis seperti pada judul karena dalam beberapa proyek saya perlu menggunakan pohon file di mana sumber berada dalam subfolder, PyCharm kemudian bingung tentang impor. Membunuh cache mungkin membantu sesaat tetapi bukan pendekatan yang tepat. Tandai direktori sumber sebagai root dan semuanya baik-baik saja.
predmod
133

Tanggapan Dmitry tidak berhasil untuk saya.

Saya mendapatkan pekerjaan saya dengan pergi ke Project Interpreters, Memilih tab "Paths", dan menekan tombol refresh di submenu itu. Ini secara otomatis diisi dengan sesuatu yang disebut "kerangka python".

sunting : tangkapan layar menggunakan PyCharm 3.4.1 (cukup tersembunyi)

masukkan deskripsi gambar di sini

kelorek
sumber
6
Di mana "Interpreters Python". Apakah maksud Anda "Penerjemah Proyek"? Saya menggunakan Linux dan saya tidak dapat menemukan tab Paths juga.
Baskaya
1
Di PyCharm 3.4 di OSX, ini adalah ikon yang terlihat seperti pohon folder kecil, dan tidak mengatakan "Paths".
Daniel Bushman
12
Bagi siapa pun yang masih bingung (dalam 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
Tidak ada tombol refresh seperti itu di PyCharm 4, hanya tanda plus dan minus.
dtheodor
3
@Sarah Di PyCharm 4.0.4, di jendela "Interpreter Paths", saya tidak memiliki tombol "reload list of paths" (ikon penyegaran biru bawah). Juga, saya tidak melihat jalur apa pun dalam daftar dan tombol plus dan minus dinonaktifkan.
Henrik Heimbuerger
70

Ada banyak solusi untuk ini, beberapa lebih nyaman daripada yang lain, dan mereka tidak selalu berhasil.

Inilah yang bisa Anda coba, mulai dari 'cepat' ke 'menjengkelkan':

  • Lakukan File-> Invalidate Caches / Restartdan mulai ulang PyCharm.
    • Anda juga dapat melakukan ini setelah salah satu dari metode di bawah ini, hanya untuk memastikan.
  • Pertama, periksa penerjemah mana yang Anda jalankan: Run-> Edit Configurations-> Configuration-> Python Interpreter.
  • Perbarui jalur penerjemah Anda:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Project Interpreter': ikon Gear ->More...
    • Klik tombol 'Tampilkan jalur' (bawah)
    • Klik tombol 'Refresh' (bawah)
  • Hapus penerjemah dan tambahkan lagi:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Project Interpreter': ikon Gear ->More...
    • Klik tombol 'Hapus'
    • Klik tombol 'Tambah' dan tambahkan kembali interpeter Anda
  • Hapus preferensi proyek Anda
    • Hapus .ideafolder proyek Anda
    • Tutup dan buka kembali PyCharm
    • Buka proyek Anda dari awal
  • Hapus preferensi pengguna PyCharm Anda (tetapi cadangkan terlebih dahulu).
    • ~/.PyCharm50 di Mac
    • %homepath%/.PyCharm50 di Windows
  • Beralihlah ke penerjemah lain, lalu kembali lagi ke yang Anda inginkan.
  • Buat lingkungan virtual baru, dan beralihlah ke juru bahasa lingkungan itu.
  • Beralihlah ke juru bahasa lain sama sekali, jangan kembali.
florisla
sumber
Saya telah mengalami masalah ini selama saya telah menggunakan PyCharm dan mereka masih tidak dapat memperbaikinya dengan andal. Untung Anda telah menyelesaikan sebagian besar pekerjaan dengan satu atau lain cara yang akhirnya memperbaiki masalah. Lucu bagaimana saya kembali ke jawaban ini dari waktu ke waktu untuk mencari tahu apa yang terjadi di sekitar saya lupa untuk mencoba.
Alex
3
Saya mengerjakan daftar ini dan menghapus / menambahkan kembali penerjemah bekerja untuk saya. Terima kasih!
Markus
16

Dalam kasus saya itu adalah struktur direktori. Proyek saya terlihat seperti ini:

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

Jadi klik kanan pada dir_b> "tandai direktori sebagai"> "root proyek"

Shoham
sumber
2
Pertanyaannya bukan bahwa PyCharm tidak mengenali kode proyek . Itu tidak mengenali metode built-in standar Python.
florisla
Memecahkan masalah saya di PyCharm 2019.3.3 di MacOS
samisnotinsane
11

Saya menemukan diri saya menghapus dan menambahkan kembali interpreter jarak jauh untuk memperbaiki masalah ini ketika memvalidasi Cache atau Refreshing Paths tidak berfungsi.

Saya menggunakan gelandangan dan sesekali dan jika saya menambahkan VM baru untuk pengaturan multi-vm saya, port forwarded berubah dan ini tampaknya membingungkan PyCharm ketika mencoba menggunakan port yang salah untuk SSH. Mengubah port sepertinya tidak membantu referensi yang rusak.

Thomas Farvour
sumber
10

Jika tidak ada solusi lain yang berfungsi untuk Anda, coba (cadangkan) dan hapus folder ~ / .PyCharm40 Anda, kemudian buka kembali PyCharm. Ini akan membunuh semua preferensi Anda juga.

Pada Mac Anda ingin menghapus ~ / Library / Caches / Pycharm40 dan ~ / Library / Preferences / PyCharm40.

Dan di Windows: C: \ Users \ $ USER.PyCharm40.

Imran
sumber
10

Diuji dengan PyCharm 4.0.6 (OSX 10.10.3) mengikuti langkah-langkah ini:

  1. Klik menu PyCharm.
  2. Pilih Project Interpreter.
  3. Pilih ikon Gear.
  4. Pilih tombol Lainnya.
  5. Pilih Juru Bahasa Proyek Anda.
  6. Pilih tombol Pohon Direktori.
  7. Pilih Muat ulang daftar jalur.

Masalah terpecahkan!

siripan
sumber
10

sangat mudah

Anda hanya perlu menandai direktori root Anda sebagai: ROUR SUMBER (merah), dan aplikasi Anda: ROOT TERKECUALI (biru),

maka referensi yang tidak terselesaikan akan hilang.

  • masukkan deskripsi gambar di sinijika Anda menggunakan PyChram pro, lakukan ini untuk Anda secara otomatis.
mujad
sumber
5
Saya punya pycharm pro dan itu tidak melakukan ini untuk saya, tetapi setelah saya secara manual menandai folder dengan benar itu bekerja
Jose
Ya, itu adalah jawaban yang tepat dan bukan opsi nuklir di mana efek sampingnya membantu sesaat tetapi tidak membahas bagaimana pemikiran otak jet itu ("bunuh cache", kan ... dan ketika ia dibangun kembali? "Bunuh lagi ! "). Judul, yang sebenarnya merupakan masalah dalam proyek saya, di mana root proyek belum tentu sumber root dan impor gagal memahami itu. Berikut adalah informasi langsung dari horse horse mouth jetbrains.com/help/pycharm/content-root.html "PyCharm menggunakan akar sumber sebagai titik awal untuk menyelesaikan impor"!
predmod
6

Maaf untuk mengajukan pertanyaan ini, namun saya memiliki pembaruan penting untuk dibuat.

Anda mungkin juga ingin mengembalikan penerjemah proyek Anda ke Python 2.7.6 jika Anda menggunakan versi lain selain itu. Ini bekerja untuk saya pada instalasi Ubuntu saya dari PyCharm 4.04 profesional setelah tidak ada rekomendasi lain yang menyelesaikan masalah saya.

Fairlight Evony
sumber
1
Beralih ke juru bahasa Python 2 lokal dan kemudian kembali lagi ke juru bahasa Python 3 jarak jauh Anda memperbaiki ini untuk saya juga.
James Fletcher
Ini berfungsi pada PyCharm 5 profesional juga. Tidak ada solusi lain di pos ini yang berfungsi untuk saya. Saya masuk Settings -> "Project Interpreters", mengklik gear, dan kemudian "More...". Memilih penerjemah python default ( /usr/bin/python2.7dalam kasus saya), tekan "Ok"dan "Apply". Kemudian masuk kembali dan memilih virtualenv sebenarnya yang ingin saya gunakan. "Ok"dan "Apply"lagi, dan itu sudah diperbaiki.
Josh
Demikian pula FileNotFoundErroradalah hal yang hanya Python-3. Setelah saya mengatur penerjemah yang benar di File-Settings-Project-Interpreter dan Run-Edit-Configurations, salah satunya membuat kesalahan hilang.
Bob Stein
3

Anda dapat mencoba menutup Pycharm, menghapus .ideafolder dari proyek Anda, kemudian memulai Pycharm lagi dan membuat ulang proyek. Ini berfungsi untuk saya sedangkan cache yang tidak valid tidak.

Jason McVetta
sumber
2

Saya akhirnya berhasil setelah tidak ada solusi yang diusulkan bekerja untuk saya. Saya sedang bermain dengan proyek kerangka istirahat Django dan menggunakan virtualenv saya sudah setup dengan itu. Saya bisa memperbaiki Pycharm dengan menandai folder root sebagai sumber root, tapi kemudian server Django akan melempar pengecualian perkecualian. Jadi yang satu akan bekerja ketika yang lain tidak mau dan sebaliknya.

Akhirnya saya hanya perlu menandai subfolder sebagai sumber root di pycharm. Jadi struktur saya seperti ini

-playground
     -env
     -playground

Folder taman bermain kedua adalah yang harus saya tandai sebagai sumber root untuk semuanya berfungsi seperti yang diharapkan. Itu tidak menghadirkan masalah untuk skenario saya jadi itu solusi yang bisa diterapkan.

Kupikir aku akan berbagi kalau-kalau ada orang lain yang bisa menggunakannya.

pengguna2233949
sumber
2

Ini juga bisa menjadi masalah versi python. Saya harus memilih yang tepat untuk membuatnya bekerja. masukkan deskripsi gambar di sini

Shehaaz
sumber
2

Jika Anda ingin mengabaikan hanya beberapa "referensi yang tidak terselesaikan" kesalahan, Anda juga bisa mengatakannya secara eksplisit dengan menempatkan ini di depan kelas / metode / fungsi Anda:

# noinspection PyUnresolvedReferences
flix
sumber
1

Saya menutup semua proyek lain dan menjalankan proyek yang diperlukan dalam isolasi di Pycharm. Saya membuat virtualenv terpisah dari pycharm dan menambahkan semua modul yang diperlukan di dalamnya dengan menggunakan pip. Saya menambahkan lingkungan virtual ini dalam juru bahasa proyek. Ini menyelesaikan masalah saya.

Waqar Detho
sumber
1

Sungguh mimpi buruk, penggabungan jawaban StackOVerflow saya yang berbeda:

  1. Beralihlah ke penerjemah lokal /usr/bin/pythonX.X dan terapkan
  2. Lihat jalur seperti jawaban di atas
  3. Temukan jalur kerangka. Milik saya adalah (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Beralih kembali ke juru bahasa dan tambahkan jalur kerangka secara manual jika itu tidak muncul secara otomatis.
Tim
sumber
1

Tidak ada solusi di atas yang berfungsi untuk saya!
Jika Anda menggunakan lingkungan virtual untuk proyek Anda, pastikan untuk menerapkan python.exefile yang ada di dalam direktori lingkungan virtual Anda sebagai penerjemah untuk proyek, (Alt + Ctrl + Shift + S) ini memecahkan masalah bagi saya.

Ali Sherafat
sumber
1

Dalam kasus saya kesalahan inspeksi muncul karena kasus kode python yang sangat spesifik. Fungsi min yang berisi dua fungsi numpy dan dua akses daftar membuat inspeksi kode saya memberikan kesalahan semacam ini.

Menghapus baris 'd = 0' dalam contoh berikut ini memberikan kesalahan referensi yang tidak terselesaikan seperti yang diharapkan, tetapi membaca tidak membuat kesalahan hilang untuk inspektur kode. Saya masih bisa menjalankan kode tanpa masalah sesudahnya.

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])

Menghapus cache dan memuat ulang daftar jalur tidak berfungsi. Hanya mengubah kode dengan salah satu contoh tambalan berikut ini berfungsi:

  • Urutan lain dari parameter 'min': secara skematis SUTV tetapi tidak STUV atau TSUV
  • Menggunakan metode alih-alih fungsi: S [d] .abs () bukan np.abs (S [d])
  • Menggunakan fungsi abs () bawaan
  • Menambahkan nomor ke parameter pilihan: U [d] + 0.
Wannes Goethals
sumber
1

Tidak ada jawaban yang memecahkan masalah saya.

Apa yang saya lakukan adalah berpindah lingkungan dan kembali ke lingkungan yang sama. File->Settings->Project interpreter

Saya menggunakan lingkungan conda.

Kristjan Kica
sumber
1

Bekerja untuk saya dengan tindakan yang lebih sederhana :


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

Untung - Pycharm memperbarui kerangka dan semuanya baik-baik saja.

Alexander.Iljushkin
sumber
0

Jika Anda menggunakan vagrantkesalahan dapat disebabkan oleh juru bahasa python yang salah. Di kami vagrantmenggunakan kami pyenvjadi saya harus mengubah Python Interpreter pathjalur dari /usr/bin/pythonke/home/vagrant/.pyenv/versions/vagrant/bin/python masukkan deskripsi gambar di sini

Daniil Mashkin
sumber
0

Saya punya proyek di mana satu file di src/impor file lain di direktori yang sama. Untuk membuat PyCharm mengenali saya harus pergi ke File> Pengaturan> Proyek> Struktur Proyek> pilih srcfolder dan klik "Tandai sebagai: Sumber"

Dari https://www.jetbrains.com/help/pycharm/configuring-folders-within-a-content-root.html

Sumber root berisi file sumber aktual dan sumber daya. PyCharm menggunakan akar sumber sebagai titik awal untuk menyelesaikan impor

qwr
sumber
0

Masalah saya adalah bahwa Flask-WTF tidak diselesaikan oleh PyCharm . Saya telah mencoba menginstal ulang dan kemudian menginstal atau memvalidasi Cache dan Restart PyCharm, tetapi masih tidak berfungsi.

Lalu saya datang dengan solusi ini dan itu berfungsi dengan baik untuk saya.

  1. Buka Project Interpreter dengan Ctrl + Alt + S (Windows) dan kemudian klik Install (+) paket baru.

masukkan deskripsi gambar di sini

  1. Ketik paket yang tidak diselesaikan oleh PyCharm dan kemudian klik Instal Paket . Kemudian klik OK .

masukkan deskripsi gambar di sini

Sekarang, Anda akan melihat perpustakaan Anda telah diselesaikan.

Hien Quang Le
sumber
-1

Apakah Anda menggunakan virtualenv?

jika demikian, Anda perlu memberi tahu PyCharm untuk setiap perubahan di lokasi python.exe yang diinginkan (hanya ./aktivasi tidak cukup untuk PyCharm)

Pastikan Pycharm menunjuk ke interpetor dan paket yang benar: File -> Settings -> Project -> Project Interpreter. Klik gir dan pilih python.exe di bawah folder Script virtualenv

masukkan deskripsi gambar di sini

Bar Horing
sumber