2016-05-21 17 views
7

Altı öğeden hiçbir şey alınamıyor. Bu satırların her ikisi de hataları verir:Python altı kitaplığından içe aktarılamıyor

from six.moves.urllib.request import urlretrieve 

->Unresolved reference "urlretrieve"

from six.moves import cPickle as pickle 

->Unresolved reference "cPickle"

OSX 10.11.5. IntelliJ 2016.1.2, PyCharm 2016.1.3, Python 2.7.11, Altı 1.10.0.

  • intellij

    • Anahtarlı Python tercümanlar: I (PyCharm shows unresolved references error for valid code ve başına diğer mesajları) düzeltmeye yaptık ne

      -> Geçersiz Kılan Önbellekler/Yeniden

    • fikri dosyasını
    • IDE silindi (-> pycharm IntelliJ)
    • Doğrulandı
    • IDE anahtarlamalı
    • aynı kaynaktan sahip tamamen yeni bir proje oluşturuldu Altı akımdır:

    _

    $ sudo pip install -U six 
    Requirement already up-to-date: six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg 
    

    Python SDK'lerini Denedim:

    Python 2.7.11 (/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7) 
    Python 3.5.1 (/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5) 
    Python 2.7.10 (/usr/local/bin/python2.7) 
    

    Hiçbir şey çalıştı. Yardım memnuniyetle karşılanacaktır! Teşekkürler.

    ---------- 23 Mayıs 2016 Güncelleştirmesi -------------------------------

    "from six.moves ..." komutunu çalıştırmak, satırlardan komut satırından hata üretmiyor. Komut satırı Python 2.7.11'i çağırıyor. PyCharm ayrıca Python 2.7.11 kullanıyor ve PyCharm da altı tane olduğunu gösteriyor - ilk ekran görüntüsünü gör. Projede .pyc dosyası yok, sadece main.py. enter image description here Garip, main.py, PyCharm içinde hatasız çalışır; "Merhaba" satırı yazdırıyor (bkz. ikinci ekran görüntüsü). File runs OK Bu ekran görüntüsü, proje yorumcusunu şu ayarlarda gösterir: enter image description here Hala şaşırıyorum.

    ---------- Güncelleme 24 Mayıs 2016 -----------------------------

    import six hem kod hem de python kabuğunda ve uygulamadan sonra altı çalışır. dosya = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg/six.pyc. Bununla birlikte, PyCharm IDE hala altı.mikro içe aktarma satırlarındaki hataları gösterir.

  • +0

    Yüklemeyi ve çalıştırmayı denediğiniz kodda gösterdiğiniz satırlar var mı? Bu satırları bir python kabuğuna yazmayı denediniz mi? –

    +0

    Evet, yukarıdaki içe aktarma satırları çalıştırmak istediğim kodlardır. Operasyon koduna henüz girmedim, sadece ilk önce tüm ithalatı almaya çalışıyordum. Bu kod bir Google Tensorflow öğreticisinden. Bu satırları bir python kabuğuna yazdığımda herhangi bir hata alamıyorum, bu yüzden belki de Burhan'ın öne sürdüğü gibi göz ardı edebileceğim bir uyarı olabilir mi? –

    +0

    Peki, Burhan'ın size söylediği şey, onu ithal etmek için yaklaşık altı kişinin bildiği Python yorumlayıcısını çalıştırmanız gerektiğidir. Görünüşe göre, komut satırından bir kabuğa bastığın zamanki bu. PyCharm veya IntelliJ'i nasıl kullanacağınızı veya kullanmak istediğiniz herhangi bir aracı nasıl kullanacağınızı anlamanız gerekir. Bahsedilen önbellekleme sorunu buysa, hata bir önbellek yeniden oluşturulmasıyla birlikte gitmelidir. __pycache__ adlı * .pyc ve dizinler adlı dosyaları kaldırmayı deneyin ve yardımcı olup olmadığını görün. –

    cevap

    1

    Bu soru this one tarafından cevaplandırılıyor gibi görünüyor (bunu nasıl çift olarak işaretleyeceğimi bilmiyorum). Bu modül için kendi python-iskeletinizi uygulamadığınız sürece "altı" modülün dinamik yapısı nedeniyle ne yazık ki kolay çözümü yoktur.

    1

    six sadece /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 yüklenir, bu nedenle pycharm/IntelliJ

    Not o tercüman kullanırsanız sadece yeni bir sanal ortam oluşturursanız, ayrı ayrı o six yüklemek gerekecek çalışacaktır.

    PyCharm/IntelliJ size bu uyarıları veriyorsa, ancak kod aslında çalışır - bu sadece PyCharm ile önbelleğe alma sorunudur ve güvenli bir şekilde göz ardı edebilirsiniz - PyCharm önbelleği yeniden günceller.

    0

    six.moves import cPickle öğesinden 6'yı import yerine kullanabilirsiniz, sonra six.moves.cPickle'ı kullanın.

    Benim için çalışıyor.

    İlgili konular