Mencoba
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Perhatikan bahwa dalam Python 3, sintaks untuk bagian dalam else
klausa akan menjadi
from .. import one
Setelah dipikir-pikir, ini mungkin tidak akan memperbaiki masalah spesifik Anda. Saya salah mengerti pertanyaan dan berpikir bahwa two.py dijalankan sebagai modul utama, tetapi bukan itu masalahnya. Dan mengingat perbedaan dalam cara Python 2.6 (tanpa mengimpor absolute_import
dari __future__
) dan Python 3.x menangani impor, Anda tidak perlu melakukan ini untuk Python 2.6, saya tidak berpikir.
Namun, jika Anda akhirnya beralih ke Python 3 dan berencana menggunakan modul sebagai modul paket dan juga skrip mandiri di dalam paket, mungkin ide yang bagus untuk menyimpan sesuatu seperti
if __name__ == '__main__':
from [whatever the name of your package is] import one # assuming the package is in the current working directory or a subdirectory of PYTHONPATH
else:
from .. import one
dalam pikiran.
EDIT: Dan sekarang untuk solusi yang mungkin untuk masalah Anda yang sebenarnya. Jalankan PyLint dari direktori yang berisi one
modul Anda (mungkin melalui baris perintah), atau letakkan kode berikut di suatu tempat saat menjalankan PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Pada dasarnya, sebagai alternatif untuk mengutak-atik PYTHONPATH, pastikan direktori kerja saat ini adalah direktori yang berisi one.py
ketika Anda melakukan impor.
(Melihat jawaban Brian, Anda mungkin dapat menetapkan kode sebelumnya init_hook
, tetapi jika Anda akan melakukan itu maka Anda bisa menambahkannya sys.path
, yang sedikit lebih elegan daripada solusi saya.)