web-gelistirme-sc.com

PyCharm geçerli kod için çözülmemiş referans hatası gösteriyor

Bir proje üzerinde çalışmak için PyCharm kullanıyorum. Proje bir tercüman ile açıldı ve yapılandırıldı ve başarıyla çalıştırılabilir. Uzak tercüman yolları doğru şekilde eşlenmiştir. Bu doğru yapılandırma gibi görünüyor, ancak PyCharm, yerleşik Python işlevleri için bile geçerli kodumu "çözülmemiş referans" hatalarıyla vurguluyor. Kod çalışsa bile neden bunlar algılanmıyor? PyCharm'ın bunları doğru bir şekilde tanımasını sağlamanın bir yolu var mı?


Sorunun bu spesifik örneği uzak bir tercüman ile ancak problem yerel tercümanlarda da ortaya çıkıyor.

233
James McCalden

Dosya | Önbellekleri Geçersiz Kılmak ... ve PyCharm'ı yeniden başlatmak yardımcı olur.

360
Dmitry Trofimov

Dmitry'in yanıtı benim için işe yaramadı. 

Proje Tercümanlarına gidip "Yollar" sekmesini seçerek ve bu alt menüdeki yenile düğmesine basarak benimki çalışmam. "Python-skeletons" adı verilen bir şeyle otomatik olarak doldurulur.

edit : PyCharm 3.4.1 kullanarak ekran görüntüsü (oldukça iyi gizlenmiş)

enter image description here

117
kelorek

Buna, bazıları diğerlerinden daha uygun birçok çözüm var ve her zaman işe yaramıyor.

İşte 'hızlı' dan 'can sıkıcı' durumlarına kadar deneyebileceğiniz her şey:

  • File -> Invalidate Caches / Restart yapın ve PyCharm ..__ programını yeniden başlatın.
    • Bunu emin olmak için aşağıdaki yöntemlerden herhangi birini yaptıktan sonra da yapabilirsiniz.
  • İlk önce hangi tercümanı çalıştırdığınızı kontrol edin: Run -> Edit Configurations -> Configuration -> Python Interpreter.
  • Tercümanınızın yollarını yenileyin:
    • File -> Instagram Hesabındaki Resim ve Videoları Settings
    • Project: [name] -> Project Interpreter -> 'Proje Tercümanı': Dişli simgesi -> More...
    • 'Yolları göster' düğmesini tıklayın (altta)
    • 'Yenile' düğmesine tıklayın (altta)
  • Tercümanı çıkarın ve tekrar ekleyin:
    • File -> Instagram Hesabındaki Resim ve Videoları Settings
    • Project: [name] -> Project Interpreter -> 'Proje Tercümanı': Dişli simgesi -> More...
    • 'Kaldır' düğmesini tıklayın
    • 'Ekle' düğmesini tıklayın ve tercümanınızı tekrar ekleyin
  • Proje tercihlerinizi silin.
    • Projenizin .idea klasörünü silin
    • PyCharm’i kapatın ve yeniden açın
    • Projenizi sıfırdan açın
  • PyCharm kullanıcı tercihlerinizi silin (ancak önce yedekleyin) .
    • Mac'te ~/.PyCharm50
    • Windows'ta %homepath%/.PyCharm50
  • Başka bir tercümana geçin, ardından istediğinize geri dönün.
  • Yeni bir sanal ortam oluşturun ve bu ortamların tercümanına geçin.
  • Tamamen başka bir tercümana geçin, geri dönmeyin.
50
florisla

Önbellekleri Geçersiz Kılmak veya Yolları Yenilemek işe yaramadığında bu sorunu gidermek için kendimi uzak tercümanı çıkarıp yeniden ekleyerek buluyorum.

Çoklu-vm kurulumuma yeni bir VM eklersem, serseri ve her seferinde bir süre kullanırım, iletilen bağlantı noktası değişir ve bu, SSH için yanlış bağlantı noktasını kullanmaya çalıştığında PyCharm'ı karıştırır. Bağlantı noktasını değiştirmek, kırılan referanslara yardımcı olmuyor gibi görünüyor.

11
Thomas Farvour

Benim durumumda bu dizin yapısıydı . Projem şuna benziyor:

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

Dir_b> "dizini"> "proje kökü" olarak işaretle

11
Shoham

Bu adımları izleyerek PyCharm 4.0.6 (OSX 10.10.3) İle test edilmiştir:

  1. PyCharm menüsünü tıklayın.
  2. Proje Yorumlayıcı'yı seçin.
  3. Dişli simgesini seçin.
  4. Diğer düğmesini seçin.
  5. Bulunduğunuz Proje Yorumlayıcı'yı seçin.
  6. Dizin Ağacı düğmesini seçin.
  7. Yol listesini yeniden yükle'yi seçin.

Sorun çözüldü!

10
siripan

Diğer çözümlerin hiçbiri sizin için işe yaramazsa, ~/.PyCharm40 klasörünüzü (yedeklemeyi) ve silmeyi deneyin, sonra PyCharm'i yeniden açın. Bu, tüm tercihlerinizi de öldürür.

Mac'te ~/Library/Caches/Pycharm40 ve ~/Library/Preferences/PyCharm40 öğelerini silmek istiyorsunuz.

Ve Windows'ta: C:\Users\$ USER.PyCharm40.

10
Imran

Bu soruyu çözdüğüm için üzgünüm, ancak önemli bir güncellemem var.

Ayrıca, başka herhangi bir versiyon kullanıyorsanız, proje tercümanınızı Python 2.7.6'ya geri çevirmek isteyebilirsiniz. Bu, benim için diğer önerilerden hiçbiri sorunu çözmediğinde PyCharm 4.04 profesyonelinin Ubuntu kurulumunda çalıştı.

5
Fairlight Evony

Pycharm'i kapatmayı, .idea klasörünü projenizden silmeyi, ardından Pycharm'i yeniden başlatmayı ve projeyi yeniden oluşturmayı deneyebilirsiniz. Bu benim için çalıştı, önbelleği geçersiz kılmadı. 

3
Jason McVetta

Ayrıca bir python sürüm sorunu olabilir. Çalışması için doğru olanı seçmek zorunda kaldım . enter image description here

2
Shehaaz

çok kolay

kök dizininizi SOURCE ROOT (kırmızı) ve uygulamalarınız: EXCLUDED ROOT (mavi) olarak işaretlemeniz yeterlidir.

sonra çözülmeyen referans kaybolacaktır.

  • enter image description here Eğer PyChram pro kullanıyorsanız bunu otomatik olarak sizin için yapın.
2
mujad

Sonunda bu çözümü, önerilen çözümlerin hiçbiri benim için çalıştıktan sonra aldım. Bir Django dinlenme çerçevesi projesiyle oynuyordum ve kurulumunu yaptığım bir sanalenv kullanıyordu. Kök klasörünü kaynak kökü olarak işaretleyerek Pycharm'i tamir etmeyi başardım, ancak daha sonra Django'nun sunucusu istisnaları çözecektir. Öyleyse biri diğeri olmazsa ya da tam tersi olduğunda işe yarar. 

Sonunda, alt klasörü pycharm'taki kaynak olarak işaretlemek zorunda kaldım. Yani benim yapım böyleydi

-playground
     -env
     -playground

Bu ikinci oyun alanı klasörü, her şeyin beklendiği gibi çalışması için kaynak kökü olarak işaretlediğim klasör. Bu benim senaryom için hiçbir sorun yaratmadı, bu yüzden uygulanabilir bir çözüm oldu. 

Sadece başka birinin kullanabileceği durumlarda paylaşacağımı düşündüm.

2
user2233949

Yukarıdaki çözümlerin hiçbiri benim için çalıştı!
Eğer projeniz için sanal ortam kullanıyorsanız, sanal ortam dizininizdeki python.exe dosyasını projenin yorumlayıcısı olarak (Alt + Ctrl + Shift + S) Olarak uyguladığınızdan emin olun.

1
Ali Sherafat

Diğer tüm projeleri kapattım ve gerekli projemi Pycharm'ta tecritte yürüttüm. Pycharm'dan ayrı bir sanalenv yarattım ve pip ile gerekli tüm modülleri ekledim. Bu sanal ortamı projenin yorumlayıcısına ekledim. Bu benim sorunumu çözdü. 

1
Waqar Detho

Benim durumumda muayene hatası, çok özel bir python kodu olması nedeniyle ortaya çıkıyor. İki sayısal fonksiyon ve iki liste erişimi içeren bir min fonksiyonu, kod incelememi bu tür hatalar verir. 

Aşağıdaki örnekte 'd = 0' satırını kaldırmak, beklendiği gibi çözülmemiş bir referans hatası veriyor, ancak okuma, hatanın kod denetçisi için ortadan kalkmasına neden olmuyor. Kodu daha sonra sorunsuz bir şekilde çalıştırabilirim.

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

Önbellekleri temizlemek ve yol listesini yeniden yüklemek işe yaramaz. Kodu yalnızca aşağıdaki örnek yamalardan biriyle değiştirmek işe yarar:

  • 'Min' parametrelerinin bir başka sırası: şematik olarak S U T V, ancak S T U V veya T S U V değil
  • İşlev yerine bir yöntem kullanarak: np.abs (S [d]) yerine S [d] .abs ()
  • Yerleşik abs () işlevini kullanma
  • Tercih edilen bir parametreye sayı ekleme: U [d] + 0.
1
Wannes Goethals

Cevapların hiçbiri sorunumu çözmedi.

Benim için ne yaptı, ortamları değiştirmek ve aynı ortama geri dönmek. File->Settings->Project interpreter

Conda ortamları kullanıyorum.

1
Kristjan Kica

Ne kabus, Tanrım, farklı StackOVerflow cevaplarının birleşmesi:

  1. Yerel tercümana /usr/bin/pythonX.X’e geçin ve başvurun
  2. Yukarıdaki cevap gibi yolları görüntüleme
  3. İskeletler yolunu bulun. Benimki (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons) idi
  4. Önceki tercümana geri dönün ve iskeletler yolunu otomatik olarak görünmediyse manuel olarak ekleyin.
1
Tim

vagrant kullanıyorsanız, hata yanlış python tercüman .. * neden olabilir. vagrant'da pyenv kullanıyoruz, bu yüzden Python Interpreter path yolunu /usr/bin/python'dan /home/vagrant/.pyenv/versions/vagrant/bin/python enter image description here

0
Daniil Mashkin

Yalnızca "çözümlenmemiş referans" hatalarını yoksaymak istiyorsanız, bunu sınıfın/yönteminizin/işlevinizin önüne koyarak açıkça PyCharm'a da söyleyebilirsiniz:

# noinspection PyUnresolvedReferences
0
flix