Pertanyaan Ide Intellij tidak akan mengenali impor kelas lokal dengan python 3 [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya punya skrip python3, script.py, dan di dalamnya saya ingin memberi contoh Foobar kelas yang didefinisikan dalam clazz.py. Namun, ketika saya mencoba mengimpor, saya mendapatkan:

$ python3 script.py
...
SystemError: Parent module '' not loaded, cannot perform relative import

Berikut ini struktur file saya:

python_import/
├── __init__.py
├── clazz.py
└── script.py

clazz.py:

class Foobar():
    def __init__(self):
        print("initialized a foobar")

script.py:

from .clazz import Foobar
foobar = Foobar()

Ini berjalan baik jika saya menyingkirkan . dalam import; Namun, jika saya melakukan ini, IDE saya (Intellij IDEA) merah-menggarisbawahi impor dan tidak akan secara otomatis melengkapi apa pun. Saya percaya termasuk . benar dalam python3, dan Intellij tampaknya menyukainya, jadi mengapa program saya tidak berjalan kecuali saya menghapusnya?

Saya telah membaca http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#import, http://python.readthedocs.org/en/latest/reference/import.html, Bagaimana cara mengimpor kelas dalam direktori atau sub direktori yang sama?, Impor relatif dengan Python 3 dan Impor relatif dengan Python 3 tidak berfungsi.

Saya menduga itu mungkin ada hubungannya dengan virtualenv tetapi a) Saya tidak mengerti mengapa direktori kerja tidak akan menjadi bagian dari PYTHONPATH dan b) Saya tidak begitu yakin bagaimana mengubahnya dalam virtualenv - Intellij mengaturnya untuk saya.


4
2018-05-17 06:01


asal


Jawaban:


Alasan Anda suka IDE . adalah tahu skrip Anda ada dalam paket python_import/, tetapi ketika Anda menjalankannya melalui commandline, interpreter tidak tahu apa-apa tentang paket, jadi impor relatif tidak akan berfungsi.

Untuk menghilangkan kesalahan garis merah "referensi yang belum terselesaikan", lihat Masalah referensi yang belum terselesaikan di PyCharm, ia memiliki ilustrasi sempurna selangkah demi selangkah.


4
2018-05-17 06:34