PyCharm'da çözülmemiş referans sorunu


373

Bir dizin yapım var

├── simulate.py
├── src
   ├── networkAlgorithm.py
   ├── ...

Ve ağ modülüne ile erişebilirim sys.path.insert().

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

Ancak pycharm, modüle erişemediğinden şikayet ediyor. Referansı çözmeyi pycham'a nasıl öğretebilirim?

resim açıklamasını buraya girin


4
Src klasöründe __init__.pydosya var mı?
Martı GDI

@Puffin GDI: Hayır, değil.
prosseek

5
@PuffinGDI src klasörlerinin bu init .py dosyasına ihtiyacı var mı?
Jack Chi


Sınıf adını yeniden adlandırdım ve üzerinde çalışmaya devam ettim. Ben koşmak isabet, tamamen yeniden adlandırmayı unuttum ve ithalat sırasında pycharm önerileri aramaya çalıştı bu hata vardı. Lanet olsun, öneriler büyük / küçük harfe duyarlıdır! - Python için yeni !!
Vignesh Paramasivam

Yanıtlar:


817

Eğer yaptığımız gibi el ile ekleyerek olduğu aslında, bunu yapmanın bir yolu, ama daha basit bir yöntem var olduğunu ve eklemek istediğiniz o basitçe pycharm anlatarak olan srcbir kaynak kök olarak klasör ve sonra piton için kaynaklar kök ekleyerek yolu.

Bu şekilde, çevirmeninizin ayarlarına bir şeyler kodlamak zorunda kalmazsınız:

  • srcKaynak içerik kökü olarak ekleyin :

                            resim açıklamasını buraya girin

  • Ardından, aşağıdakilere kaynak ekleyin PYTHONPATH:

resim açıklamasını buraya girin

  • Şimdi ithalatlar çözülecek:

                      resim açıklamasını buraya girin

Bu şekilde, kaynak kök olarak istediğiniz her şeyi ekleyebilirsiniz ve işler basitçe işe yarayacaktır. Eğer ancak bir kaynak kökü olarak işaretlenmemiş ise, olacak bir hata alıyorum:

                                  resim açıklamasını buraya girin

Tüm bunlardan sonra yeniden başlatmayı unutmayın. PyCharm menüsünde şunları seçin: Dosya -> Önbellekleri Geçersiz Kıl / Yeniden Başlat


17
Bu, IntelliJ ile Python eklentisini kullanıyorsanız da işe yarar.
rob mayoff

13
Bu çözüm işe yarıyor. Sorun başka bir programcı svn kodu aldığında, "çözülmemiş başvuru" hata isteminden kurtulmak için aynı ayarları tekrar yapmak zorunda olmasıdır.
Ben Lin

2
@GamesBrainiac, çözüm IDE "sys.path.insert (0," ./src ")" bu özel dosya için PYTHONPATH içine ekleyebilir, sonra uygun sözdizimi çözümleme ayrıştırmak olmasıdır.
Ben Lin

2
Ayrıca, içerik kök yolunuzun doğru olduğundan emin olmanız gerekir. Pycharm 5'te bunu Tercihler -> Proje -> Proje Yapısı bölümünde bulabilirsiniz.
lps

1
Garip bir şekilde, alt dizinler dikkate alınmaz. Örneğin, altında src, viewsiçinde bulunduğum klasörünüz varsa myview.py, denerken hala çözülmemiş referans hatası alıyorum from src.views.myview import <my_function>...
SexyBeast

49
  1. klasördeki __init__.pydosyayı kontrol etsrc
  2. srcklasörü kaynak kök olarak ekle
  3. Ardından, bilgisayarınıza kaynak eklediğinizden emin olun PYTHONPATH(yukarıya bakın)
  4. PyCharm menüsünde şunları seçin: Dosya -> Önbellekleri Geçersiz Kıl / Yeniden Başlat

11
Bu son adım benim çözümümde eksik olan tek şeydi. Kabul edilen cevap bunu buna ekleyebilir.
aimbire

burada bahsedilen son adım olmadan, kabul edilen cevap çalışmaz. Kabul edilen cevap bu adımı da eklemelidir /
santhosh kumar

23

Birisi hala buna bakıyorsa, kabul edilen cevap, denediğimde PyCharm 2016.3 için hala çalışıyor. Kullanıcı arayüzü değişmiş olabilir, ancak seçenekler hala aynıdır.

yani. Kök klasörünüze sağ tıklayın -> 'Dizini Farklı İşaretle' -> Kaynak Kökü


1
Bu tartışmada çok karmaşık cevaplar var. Burada sunulan çözüm benim için çok kolay çalıştı.

16

Tüm geçici çözümleri test ettikten sonra, bir göz atmanızı Settings -> Project -> project dependenciesve yeniden düzenlemenizi öneririm .

pycharm tercihi


Bu benim için mükemmel çalışıyor. Ben pygameorada yükledim ve daha çözülmemiş referans sorunu değil!
Michal Przybylowicz


5

Genel olarak, bu eksik bir paket problemidir, sadece kodu çözülmemiş referansa yerleştirin ve Alt+Enterseçenekleri ortaya çıkarmak için düğmesine basın , sonra nasıl çözeceğinizi bilmelisiniz.


4

Kabul edilen cevabı takip ettikten sonra, aşağıdakileri yapmak benim için çözdü:

FileSettingsProject <your directory/project>Project Dependencies

Çözümlenmemiş içe aktarılan dosyanızın bulunduğu dizini / projeyi seçin ve Pycharm'a bu projenin diğer projenize bağlı olduğunu bildirmek için kutuyu işaretleyin.

Klasör hiyerarşim, sorudakinden biraz farklı. Benimki böyle

├── MyDirectory  
     └── simulate.py  
├── src  
     ├── networkAlgorithm.py  
     ├── ...

Pycharm'a src'nin bağlı olduğunu söylemek MyDirectorysorunu benim için çözdü!


4

Tüm cevaplar gerçekten yararlı olsa da, açıkça açıklanması gereken küçük bir bilgi parçası var:

  • Esasen, birden çok hiyerarşik dizini olan bir proje bazı özniteliklere sahip bir paket olarak çalışır.
  • Özel yerel olarak oluşturulmuş Sınıfları içe aktarmak için .pydosya içeren dizine gitmeli ve __init__.pyorada (boş) bir dosya oluşturmalıyız .

Bu neden yardımcı olur, çünkü bu dosya Python dizin içeren paketleri muamele yapmak için gerekli olmasıdır. Şerefe!


3

PyCharm ile yükleyin (Topluluk Sürümü ile çalışır). Açın ve Settings > Project > Project Interpreteraşağıdaki ekran görüntüsünde yeşil + simgesini tıklayın. Açılan 2. iletişim kutusunda paket adını girin ve 'Paketi Yükle' düğmesini tıklayın.

resim açıklamasını buraya girin



1

Lütfen olması gereken doğru yorumlayıcıyı kullanıp kullanmadığınızı kontrol edin. Bunu çözmek için "çözülmemiş referans 'django'" hatası alıyordum Proje yorumlayıcısını (Python 3'ü Python 2.7'ye değiştirdim) proje ayarlarından değiştirdim: Proje'yi seçin, Dosya -> Ayarlar -> Proje: -> Proje Yorumlayıcı -> Kaşlar'a gidin ve Doğru sürümü veya Tercüman seçin (örn. /usr/bin/python2.7).


1

Benim durumumda sorun, Virtual environmentküresel site paketlerine erişimi olmayan kullanıyordum . Böylece, tercüman yeni kurulan paketlerin farkında değildi.

Sorunu çözmek için sanal yorumcunuzu düzenleyin veya yeniden oluşturun ve Inherit global site-packagesseçeneği işaretleyin .

resim açıklamasını buraya girin


Bunun istenmeyen sonuçları yoktur ve sanal çevre kullanmak için bir nedeni yenmez mi? Yani, o ortamı bir yere götürürseniz ve bu global site paketleri kuruluysa, başınız derde girer. Bende böyle düşünmüştüm.
theStud54


0

PyCharm 2019.3.1'de tamamlandı src klasörünüze sağ tıklayın -> "Dizini farklı işaretle" -> "Hariç tutuldu " seçeneğine tıklayın ve src klasörünüz mavi olmalıdır.


-1

Pycharm venv kullanır. Venv konsolunda paketleri açıkça yüklemeniz veya içeri girmeniz gerekir settings -> project interpreter -> add interpreter -> inherit global site-packages.


-1

Pycharm'ın daha yeni sürümlerinde, bir dosyayı içe aktarmak istediğiniz dizini veya python paketini sağ tıklayıp ardından 'Dizini Farklı İşaretle' -> 'Kaynak Kökü'


-1

Bunu düzeltmenin en kolay yolu pyCharm yazılımınızda aşağıdakileri yapmaktır:

Şuna tıklayın: Dosya> Ayarlar> (Proje: proje adınız)> Proje Tercümanı>

ardından istediğiniz paketi aramak ve yüklemek için sağ taraftaki "+" simgesini tıklayın.

Kodlamanın tadını çıkarın !!!


1
Stack Overflow'a hoş geldiniz ve cevabınız için teşekkürler. Bu doğru olsa da, gelecekte lütfen bağlam veya daha fazla ayrıntı olmadan resim veya diğer sitelere bağlantılar göndermekten kaçının. Bağlantı bir noktada çalışmayı durdurabilir ve bu yanıtı diğer kullanıcılar için daha az kullanışlı hale getirebilir.
CyberJacob

@CyberJacob Çok teşekkür ederim ve tavsiyeleriniz için çok teşekkürler, görüntüyü kaldırarak ve metin ekleyerek cevabı düzenledim.
zaid.mohammed
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.