Deneyin
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Python 3'te, else
yan tümcedeki parçanın sözdiziminin
from .. import one
İkinci düşüncede, bu muhtemelen sizin probleminizi çözmeyecektir. Soruyu yanlış anladım ve two.py'nin ana modül olarak çalıştırıldığını düşündüm, ancak durum böyle değil. Ve Python 2.6 (ithal etmeden şekilde farklılıkları dikkate absolute_import
dan __future__
ve Python 3.x kolu ithalat), yine Python 2.6 için bunu yapmak gerek olmaz, ben sanmıyorum.
Yine de, sonunda Python 3'e geçerseniz ve bir modülü hem paket modülü hem de paketin içinde bağımsız bir komut dosyası olarak kullanmayı planlıyorsanız, benzer bir şeyi saklamak iyi bir fikir olabilir.
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
akılda.
EDIT: Ve şimdi gerçek sorununuzu olası bir çözüm için. one
Modülünüzü içeren dizinden PyLint'i çalıştırın (belki de komut satırı üzerinden) veya PyLint'i çalıştırırken aşağıdaki kodu bir yere koyun:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Temel olarak, PYTHONPATH ile uğraşmaya alternatif olarak, geçerli çalışma dizininin one.py
içe aktarma işlemini gerçekleştirdiğiniz dizinde olduğundan emin olun .
(Brian'ın cevabına bakarak, muhtemelen önceki kodu atayabilirsiniz init_hook
, ancak bunu yapacaksanız, basitçe yaptığı eki yapabilirsiniz sys.path
, bu da benim çözümümden biraz daha zariftir.)