Python导入模块

时间:2014-01-29 21:48:41

标签: python python-2.7 python-import

最近开始了一个新的Python项目。

我正在解决导入模块错误,我试图从同一目录导入模块。

我正在关注解决方案here,但我的情况略有不同,因此我的脚本无法运行。

我的项目目录如下:

dir-parent
    ->dir-child-1
    ->dir-child-2
    ->dir-child-3
    ->__init__.py (to let python now that I can import modules from here)
    ->module1
    ->module2
    ->module3
    ->module4
    ->main.py

在我的main.py脚本中,我将这些模块导入到以下相同的目录中:

from dir-parent.module1 import class1

当我使用此方法运行脚本时,它会抛出一个导入错误,指出没有名为dir-parent.module1的模块(这是错误的,因为它存在)。

然后我将import语句更改为:

from module1 import class1

这似乎解决了错误,但是,我正在使用的代码已经使用了超过2。5年,并且它总是通过这种方法导入模块,在代码中它引用了dir-parent目录。

我只是想知道在没有更改这些导入语句和遗留代码的情况下是否有遗漏或需要做的事情来解决这个问题?

编辑:我正在使用PyCharm并且正在运行PyCharm

2 个答案:

答案 0 :(得分:1)

如果您想保持代码不变,我认为您必须将dir-parent添加到PYTHONPATH。例如,在main.py:

之上添加以下内容
import os, sys

parent_dir = os.path.abspath(os.path.dirname(__file__)) # get parent_dir path
sys.path.append(parent_dir)

答案 1 :(得分:0)

Python的导入和路径是一种痛苦。这就是我对具有main的模块所做的。我不知道是不是pythonic。

# Add the parent directory to the path
CURRENTDIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
if CURRENTDIR not in sys.path:
    sys.path.append(CURRENTDIR)