Saya punya proyek Python menggunakan PyDev di Eclipse, dan PyDev terus menghasilkan kesalahan palsu untuk kode saya. Saya memiliki modul settings
yang mendefinisikan settings
objek. Saya mengimpornya dalam modul b
dan menetapkan atribut dengan:
from settings import settings
settings.main = object()
Dalam beberapa kode saya - tetapi tidak semuanya, pernyataan seperti:
from settings import settings
print settings.main
... menghasilkan pesan "Variabel tidak terdefinisi dari impor: utama" di panel kesalahan kode Eclipse, meskipun kode berjalan tanpa masalah. Bagaimana saya bisa memperbaikinya?
python
code-analysis
pydev
Chris B.
sumber
sumber
Jawaban:
Untuk kode dalam proyek Anda, satu-satunya cara adalah menambahkan deklarasi yang mengatakan bahwa Anda mengharapkannya - mungkin dilindungi oleh perintah
if False
agar tidak dieksekusi (analisis kode statis hanya melihat apa yang Anda lihat, bukan info runtime - jika Anda buka modul itu sendiri, Anda tidak akan memiliki indikasi bahwa main diharapkan).Untuk mengatasinya ada beberapa pilihan:
Jika itu adalah beberapa modul eksternal, dimungkinkan untuk menambahkannya ke
forced builtins
sehingga PyDev memunculkan shell untuk mendapatkan informasi runtime (lihat http://pydev.org/manual_101_interpreter.html untuk rinciannya) - yaitu: kebanyakan, PyDev akan impor modul dalam shell dan lakukan adir(module)
dandir
pada kelas yang ditemukan dalam modul untuk menyajikan penyelesaian dan membuat analisis kode.Anda dapat menggunakan Ctrl + 1 (Cmd + 1 untuk Mac) sejalan dengan kesalahan dan PyDev akan memberi Anda opsi untuk menambahkan komentar untuk mengabaikan kesalahan itu.
Dimungkinkan untuk membuat
stub
modul dan menambahkannya kepredefined
kelengkapan ( http://pydev.org/manual_101_interpreter.html juga memiliki perincian tentang itu).sumber
try: import a; except: a=mockModule
apakah ada cara untuk menekan ini tanpa komentar?Saya menggunakan OpenCV yang bergantung pada binari dll jadi saya punya skrip di mana setiap baris memiliki kesalahan konyol ini. Python adalah bahasa yang dinamis sehingga kesempatan seperti itu tidak dianggap kesalahan.
Saya menghapus semua kesalahan ini dengan membuka:
Window -> Preferences -> PyDev -> Editor -> Analisis Kode -> Undefined -> Undefined Variable From Import -> Ignore
Dan itu saja.
Mungkin juga, Window -> Preferences -> PyDev -> Editor -> Analisis Kode -> Impor -> Impor tidak ditemukan -> Abaikan
sumber
Posting yang ditandai sebagai jawaban memberikan solusi, bukan solusi.
Solusi ini bekerja untuk saya:
Window - Preferences - PyDev - Interpreters - Python Interpreter
Forced builtins
tabNew...
multiprocessing
dalam kasus saya) dan klikOK
Tidak hanya pesan kesalahan akan hilang, anggota modul juga akan dikenali.
sumber
re
tetapi sekali saya tidak lagi menggunakan tinta merah untuk hal-hal sepertire.M
Saya mengalami masalah serupa dengan proyek Eclipse / PyDev. Dalam proyek ini direktori root dari kode python adalah sub-direktori dari proyek.
Ketika proyek itu di-debug atau menjalankan semuanya baik-baik saja karena direktori kerja ditetapkan ke tempat yang benar. Namun analisis kode PyDev gagal menemukan impor dari module1 atau module2.
Solusi adalah mengedit properti proyek -> PyDev - bagian PYTHONPATH dan menghapus / MyProject dari tab folder sumber dan tambahkan / MyProject / src sebagai gantinya.
sumber
Ini bekerja untuk saya:
langkah 1) Menghapus penerjemah, mengonfigurasikannya kembali secara otomatis
langkah 2) Jendela - Preferensi - PyDev - Juru Bahasa - Juru Bahasa Python Pergi ke tab Paksa bawaan Klik pada Baru ... Ketikkan nama modul (kutukan dalam kasus saya) dan klik OK
langkah 3) Klik kanan pada penjelajah proyek pada modul mana saja yang memberikan kesalahan. Pergi ke PyDev-> Analisis kode.
sumber
Saya memiliki masalah yang sama. Saya menggunakan Python dan Eclipse di Windows. Kode berjalan dengan baik, tetapi gerhana menunjukkan kesalahan di mana-mana. Setelah saya mengubah nama folder 'Lib' menjadi 'lib' (C: \ Python27 \ lib), masalahnya terpecahkan. Tampaknya jika kapitalisasi huruf tidak cocok dengan yang ada di file konfigurasi, ini kadang-kadang akan menyebabkan masalah (tapi sepertinya tidak selalu, karena pengecekan kesalahan baik-baik saja untuk waktu yang lama sebelum masalah tiba-tiba muncul tanpa jelas. alasan).
sumber
Perkiraan apa yang saya lakukan:
Yang dikatakan pylint:
E: 4,15: Undefined variable 'submodule' (undefined-variable)
Saya menyelesaikan ini dengan mengubah impor saya seperti:
Catatan: Saya juga mengganti nama dengan variabel yang diimpor untuk memiliki nama huruf besar untuk mencerminkan sifatnya yang konstan.
sumber
Mungkin saja Anda hanya perlu mengkonfigurasi ulang jalur python Anda di dalam Eclipse. Lihat jawaban saya untuk pertanyaan serupa.
sumber
dalam preferensi -> PyDev -> PyLint di bawah argumen untuk lolos ke PyLint tambahkan baris ini:
Anda harus melakukan ini untuk setiap yang dihasilkan. Saya menemukan ini dengan googling, tetapi saya kehilangan referensi.
sumber
Klik kanan pada penjelajah proyek pada modul mana saja yang memberikan kesalahan. Pergi ke PyDev-> Hapus Penanda Kesalahan.
sumber
Jawaban saya tidak menyumbangkan sesuatu yang baru, hanya contoh konkret yang saya temui.
PyDev menunjukkan pesan kesalahan "Variabel tidak terdefinisi dari impor: get_default_root_window ()"
Dalam shell python Anda dapat melihat bahwa ini adalah modul 'built-in' seperti yang disebutkan dalam jawaban di atas:
Sekarang di bawah Window-> Preferences-> PyDev-> Interpreters-> Python Interpreter, saya memilih tab 'Forced Builtins' dan menambahkan 'gtk.gdk' ke daftar.
Sekarang pesan kesalahan tidak muncul lagi.
sumber
Saya menemukan bahwa 2 langkah ini bekerja untuk saya sepanjang waktu:
Hal-hal yang perlu diperhatikan di sini:
Beberapa modul populer dipasang dengan beberapa pasangan orangtua dan anak dengan nama yang sama. Dalam kasus ini Anda juga harus menambahkan orang tua itu ke PYTHONPATH, di samping folder kakek-neneknya, yang sudah Anda konfirmasi / tambahkan untuk yang lainnya.
Gunakan (misalnya) "google.appengine.api.memcache" saat menambahkan ke builtin paksa, BUKAN "memcache" saja, di mana "google" dalam contoh ini, adalah anak langsung dari folder yang ditentukan dalam PYTHONPATH.
sumber
Jika Anda yakin bahwa skrip Anda berjalan dan itu adalah alarm palsu, Buka Preferensi> PyDev> Editor> Analisis Kode. Demos kesalahan ke peringatan.
http://www.pydev.org/manual_adv_code_analysis.html
sumber