ลอง
if __name__ == '__main__':
from [whatever the name of your package is] import one
else:
import one
โปรดทราบว่าใน Python 3 ไวยากรณ์สำหรับส่วนในelse
ข้อจะเป็น
from .. import one
ในความคิดที่สองสิ่งนี้อาจไม่สามารถแก้ไขปัญหาเฉพาะของคุณได้ ฉันเข้าใจผิดคำถามและคิดว่า two.py กำลังทำงานเป็นโมดูลหลัก แต่ไม่ใช่ในกรณีนี้ และเมื่อพิจารณาถึงความแตกต่างในวิธีที่ Python 2.6 (โดยไม่ต้องนำเข้าabsolute_import
จาก__future__
) และ Python 3.x จัดการกับการนำเข้าคุณไม่จำเป็นต้องทำสิ่งนี้กับ Python 2.6 อย่างไรก็ตามฉันไม่คิด
อย่างไรก็ตามหากคุณเปลี่ยนมาใช้ Python 3 ในที่สุดและวางแผนที่จะใช้โมดูลเป็นทั้งโมดูลแพ็กเกจและเป็นสคริปต์แบบสแตนด์อโลนภายในแพ็คเกจอาจเป็นความคิดที่ดีที่จะเก็บรักษาสิ่งที่ชอบ
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
ในใจ.
แก้ไข: และตอนนี้สำหรับวิธีแก้ปัญหาที่เป็นไปได้สำหรับปัญหาที่แท้จริงของคุณ เรียกใช้ PyLint จากไดเรกทอรีที่มีone
โมดูลของคุณ(ผ่านบรรทัดคำสั่ง) หรือวางรหัสต่อไปนี้เมื่อใช้งาน PyLint:
import os
olddir = os.getcwd()
os.chdir([path_of_directory_containing_module_one])
import one
os.chdir(olddir)
โดยพื้นฐานแล้วเป็นทางเลือกที่จะเล่นซอกับ PYTHONPATH เพียงให้แน่ใจว่าไดเรกทอรีการทำงานปัจจุบันเป็นไดเรกทอรีที่มีone.py
เมื่อคุณนำเข้า
(ดูที่คำตอบของไบรอันคุณอาจกำหนดรหัสก่อนหน้าให้init_hook
แต่ถ้าคุณจะทำอย่างนั้นคุณก็สามารถต่อท้ายsys.path
สิ่งที่เขาทำซึ่งสง่างามกว่าโซลูชันของฉันเล็กน้อย)