Saya ingin mengimpor subfolder sebagai modul. Oleh karena itu, setiap subfolder berisi file __init__.py
. Struktur folder saya seperti ini:
src\
main.py
dirFoo\
__init__.py
foofactory.py
dirFoo1\
__init__.py
foo1.py
dirFoo2\
__init__.py
foo2.py
Di skrip utama saya, saya mengimpor
from dirFoo.foofactory import FooFactory
Dalam file pabrik ini saya menyertakan sub modul:
from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
Jika saya memanggil foofactory saya, saya mendapatkan kesalahan, python itu tidak dapat mengimpor submodul foo1 dan foo2:
Traceback (most recent call last):
File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in <module>
from dirFoo1.foo1 import Foo1
ImportError: No module named dirFoo1.foo1
python
import
module
subdirectory
Razer
sumber
sumber
__init__.py
ke setiap subfolder tempat Anda mengimpor.__init__.py
dapat melakukan pekerjaan itu.Foo1
ada di direktori induk dan ada kode seperti itufrom Foo1 import *
. Adakah cara untuk mencapai efek yang sama sehingga Anda tidak perlu mengawali semuanya denganFoo1
?Hanya untuk memberi tahu di sini. (dari newbee, keviv22)
Tidak pernah dan selamanya demi kebaikan Anda sendiri, beri nama folder atau file dengan simbol seperti "-" atau "_". Jika Anda melakukannya, Anda mungkin menghadapi beberapa masalah. seperti milik saya, katakanlah, meskipun perintah Anda untuk mengimpor benar, Anda tidak akan berhasil mengimpor file yang diinginkan yang tersedia di dalam folder bernama tersebut.
Nama folder tidak valid sebagai berikut:
penamaan Folder yang valid untuk di atas:
Kesalahan apa yang saya lakukan:
pertimbangkan struktur file.
Apa yang ingin saya lakukan?
Perintah apa yang saya lakukan?
from Core.Generic-Class-Folder.targetClass import functionExecute
SyntaxError: invalid syntax
Mencoba banyak pencarian dan melihat banyak pertanyaan stackoverflow dan tidak dapat memutuskan apa yang salah. Saya memeriksa ulang file saya beberapa kali, saya menggunakan
__init__.py
file, memasukkan jalur lingkungan dan sangat khawatir apa yang salah ......Dan setelah sekian lama, saya mengetahuinya saat berbicara dengan teman saya. Saya agak bodoh menggunakan konvensi penamaan seperti itu. Saya tidak boleh menggunakan spasi atau simbol khusus untuk menentukan nama folder atau file apa pun. Jadi, ini yang ingin saya sampaikan. Semoga harimu menyenangkan!
(maaf untuk kiriman besar ini ... biarkan saja rasa frustasiku pergi .... :) Terima kasih!)
sumber
Setel variabel lingkungan PYTHONPATH Anda. Misalnya seperti ini PYTHONPATH =.: .. (untuk * nix family).
Anda juga dapat secara manual menambahkan direktori Anda saat ini (src dalam kasus Anda) ke pythonpath:
sumber
Katakanlah proyek Anda terstruktur seperti ini:
Di dalamnya
run.py
, Anda dapat mengimpor skrip satu dan dua dengan:Sekarang, masih di dalam
run.py
, Anda akan dapat memanggil metode mereka dengan:sumber
Cukup buat file ___init____.py kosong dan tambahkan di root serta semua sub direktori / folder aplikasi python Anda di mana Anda memiliki modul python lainnya.
sumber
Mengalami masalah bahkan saat init .py ada di subfolder dan semua yang hilang adalah menambahkan 'sebagai' setelah impor
sumber