Thử
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
Lưu ý rằng trong Python 3, cú pháp của phần trong else
mệnh đề sẽ là
from .. import one
Suy nghĩ thứ hai, điều này có lẽ sẽ không khắc phục được vấn đề cụ thể của bạn. Tôi đã hiểu nhầm câu hỏi và nghĩ rằng Two.py đang được chạy như là mô-đun chính, nhưng đó không phải là trường hợp. Và xem xét sự khác biệt trong cách Python 2.6 (không nhập absolute_import
từ __future__
) và Python 3.x xử lý nhập, dù sao bạn cũng không cần phải làm điều này với Python 2.6.
Tuy nhiên, nếu cuối cùng bạn chuyển sang Python 3 và dự định sử dụng một mô-đun vừa là mô-đun gói vừa là tập lệnh độc lập bên trong gói, thì có thể nên giữ một cái gì đó như
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
trong tâm trí.
EDIT: Và bây giờ cho một giải pháp có thể cho vấn đề thực tế của bạn. Chạy PyLint từ thư mục chứa one
mô-đun của bạn (có thể thông qua dòng lệnh) hoặc đặt mã sau đây ở đâu đó khi chạy PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
Về cơ bản, thay thế cho việc thay đổi bằng PYTHONPATH, chỉ cần đảm bảo thư mục làm việc hiện tại là thư mục chứa one.py
khi bạn thực hiện nhập.
(Nhìn vào câu trả lời của Brian, có lẽ bạn có thể gán mã trước đó init_hook
, nhưng nếu bạn đang đi để làm điều đó thì bạn chỉ có thể làm các phụ thêm để sys.path
mà anh ấy làm, đó là hơi hơn tao nhã hơn giải pháp của tôi.)