Pada dasarnya ketika saya memiliki file python seperti:
python-code.py
dan gunakan:
import (python-code)
penerjemah memberi saya kesalahan sintaks.
Ada ide tentang cara memperbaikinya? Apakah tanda hubung ilegal pada nama file python?
Anda harus memeriksa PEP 8 , Panduan Gaya untuk Kode Python:
Nama Paket dan Modul Modul harus memiliki nama pendek, semua huruf kecil. Garis bawah dapat digunakan dalam nama modul jika itu meningkatkan keterbacaan. Paket-paket python juga harus memiliki nama-nama kecil, huruf kecil semua, meskipun penggunaan garis bawah tidak disarankan.
Karena nama modul dipetakan ke nama file, dan beberapa sistem file tidak sensitif huruf dan memotong nama panjang, penting bahwa nama modul dipilih agar cukup pendek - ini tidak akan menjadi masalah pada Unix, tetapi mungkin masalah ketika kode diangkut ke versi Mac atau Windows yang lebih lama, atau DOS.
Dengan kata lain: ganti nama file Anda :)
ops-scripts
dan tahu mereka tidak dapat diimpor menggunakan pendekatan namespace paket normal. Atau satu skrip dapat diberi namastop-website.py
untuk efek yang sama. Semua ini masih dapat diimpor melaluirunpy
dan beberapa metode lain tentu saja, tetapi ini membantu menghindari beberapa kesalahan umum.cgi-bin
folder (melakukan unitttests pada mereka), yang merupakan standar afaik. Kecuali Anda memiliki case yang jarang seperti ini, pasti ganti nama modul Anda jika Anda memiliki kontrol atasnya.Satu hal lagi yang perlu diperhatikan dalam kode Anda adalah bahwa impor bukan fungsi. Jadi
import(python-code)
seharusnyaimport python-code
yang, seperti beberapa telah disebutkan, ditafsirkan sebagai "impor kode minus python", bukan apa yang Anda maksudkan. Jika Anda benar-benar perlu mengimpor file dengan tanda hubung dalam namanya, Anda dapat melakukan hal berikut ::Tetapi, seperti juga disebutkan di atas, ini tidak benar-benar direkomendasikan. Anda harus mengubah nama file jika itu sesuatu yang Anda kendalikan.
sumber
TLDR
Tanda hubung tidak ilegal tetapi Anda tidak boleh menggunakannya karena 3 alasan:
Jika Anda benar-benar perlu mengimpor nama file dengan tanda hubung sintaks khususnya adalah ini:
Ingin tahu mengapa kita membutuhkan sintaks khusus?
Alasan untuk sintaks khusus adalah bahwa ketika Anda menulis
import somename
Anda membuat objek modul dengan pengidentifikasisomename
(sehingga nanti Anda dapat menggunakannya dengan misalnyasomename.funcname
). Tentu sajamodule-name
bukan pengidentifikasi yang valid dan karenanya sintaks khusus yang memberikan yang valid.Anda tidak mengerti mengapa nama modul bukan pengidentifikasi yang valid?
Jangan khawatir - saya juga tidak. Berikut tip untuk membantu Anda: Lihat pada baris python ini:
x=var1-var2
. Apakah Anda melihat pengurangan di sisi kanan penugasan atau nama variabel dengan tanda hubung?PS
Tidak ada yang orisinal dalam jawaban saya kecuali termasuk apa yang saya anggap sebagai bit informasi yang paling relevan dari semua jawaban lain di satu tempat
sumber
psycopg2_binary = import_module('psycopg2-binary')
. Kesalahan =>ModuleNotFoundError: No module named 'psycopg2-binary'
. Tetapipsycopg2-binary
sudah terpasang. Tidak tahu cara memasukkannya.Masalahnya adalah itu
python-code
bukan pengidentifikasi. Pengurai melihat ini sebagaipython
minuscode
. Tentu saja ini tidak akan melakukan apa yang Anda minta. Anda perlu menggunakan nama file yang juga merupakan pengidentifikasi python yang valid. Coba ganti-
dengan garis bawah.sumber
Anda mungkin dapat mengimpornya melalui beberapa
__import__
peretasan, tetapi jika Anda belum tahu caranya, Anda seharusnya tidak. Nama modul Python haruslah nama variabel yang valid ("pengidentifikasi") - itu artinya jika Anda memiliki modulfoo_bar
, Anda dapat menggunakannya dari dalam Python (print foo_bar
). Anda tidak akan dapat melakukannya dengan nama yang aneh (print foo-bar
-> kesalahan sintaks).sumber
Pada Python 3 gunakan import_module :
Lebih umum,
sumber
Meskipun penamaan file yang tepat adalah yang terbaik, jika
python-code
tidak di bawah kendali kami, peretasan menggunakan__import__
lebih baik daripada menyalin, mengganti nama, atau main-main dengan kode penulis lain. Namun, saya mencoba dan tidak berhasil kecuali saya mengganti nama file dengan menambahkan.py
ekstensi. Setelah melihat dokumen untuk mendapatkan cara mendapatkan deskripsi.py
, saya berakhir dengan ini:Itu menciptakan file baru
python-codec
di jalankan pertama.sumber