Python 3中的导入路径问题
我对Python3中的import语句有问题。我正在阅读一本书(Python 3面向对象),并且具有以下结构:Python 3中的导入路径问题,python,python-import,Python,Python Import,我对Python3中的import语句有问题。我正在阅读一本书(Python 3面向对象),并且具有以下结构: parent_directory/ main.py ecommerce/ __init__.py database.py products.py payments/ __init__.py
parent_directory/
main.py
ecommerce/
__init__.py
database.py
products.py
payments/
__init__.py
paypal.py
authorizenet.py
在paypal.py中,我试图使用Database.py中的数据库类。所以我试了一下:
from ecommerce.database import Database
我得到这个错误:
ImportError: No module named 'ecommerce'
SystemError: Parent module '' not loaded, cannot perform relative import
因此,我尝试使用这两种导入语句:
from .ecommerce.database import Database
from ..ecommerce.database import Database
我得到了这个错误:
ImportError: No module named 'ecommerce'
SystemError: Parent module '' not loaded, cannot perform relative import
我做错了什么或错过了什么
谢谢你抽出时间 将父目录添加到Python的搜索路径中。例如:
import sys
sys.path.append('/full/path/to/parent_directory')
或者,您可以将
parent\u目录
添加到环境变量PYTHONPATH
这意味着如果我想将parent\u目录移动到其他地方,或者如果我想将“ecommerce”文件夹作为一个包分发,它将不起作用,对吗?导入位于父目录中的类的任何其他方法?通常,如果您分发,即人们使用pip
进行安装,则您的包最终将位于站点包中,默认情况下位于PYTHONPATH中。对于开发,只需创建一个目录dev
或类似的目录,将它放在PYTHONPATH上一次,然后将所有项目放在那里。