2013-06-02 39 views
1

我有我下面的一本书(Python 3的面向对象)可以用Python 3 import语句的问题,我有以下结构:问题可以用Python导入路径3

parent_directory/ 
     main.py 
     ecommerce/ 
      __init__.py 
      database.py 
      products.py 
      payments/ 
        __init__.py 
        paypal.py 
        authorizenet.py 

在paypal.py中,我试图使用database.py中的Database类。所以,我想这一点:

from ecommerce.database import Database 

我得到这个错误:

ImportError: No module named 'ecommerce' 

所以我尽量用这两种导入语句:

,我得到这个错误:

SystemError: Parent module '' not loaded, cannot perform relative import 

我在做什么错或失踪?

谢谢你的时间!

回答

1

将您的parent_directory添加到Python的搜索路径中。例如这样:

import sys 
sys.path.append('/full/path/to/parent_directory') 

或者,您可以添加到parent_directory环境变量PYTHONPATH

+0

这意味着如果我想将我的parent_directory移动到其他地方,或者如果我想将“电子商务”文件夹作为包分发,它将无法正常工作,对吧?任何其他方式来导入位于父目录中的类? – ilovebigmacs

+0

通常,如果你分发,即人们使用'pip'来安装,你的软件包最终会在'site-packages'中,默认情况下它是在PYTHONPATH中。为了开发,只需创建一个“dev”目录,将其放在PYTHONPATH上,然后将所有项目放在那里。 –