Plone/SQLAlchemy(?)-如何在子包的模块中导入python包(即SQLAlchemy)?

Plone/SQLAlchemy(?)-如何在子包的模块中导入python包(即SQLAlchemy)?,sqlalchemy,plone,Sqlalchemy,Plone,我试图在子包中的模块中导入sqlalchemy 这是我的文件夹布局 PloneInstance my.package my package subpackage 在根文件夹的buildout.cfg文件中,我将“sqlalchemy”添加到鸡蛋中 在my.package的configure.zcml中,我添加了: 在子包中,我有一个空白的uuu init_uuuuuu.py文件、一个configure.zcml文

我试图在子包中的模块中导入sqlalchemy

这是我的文件夹布局

PloneInstance
    my.package
        my
            package
                subpackage
在根文件夹的buildout.cfg文件中,我将“sqlalchemy”添加到鸡蛋中

在my.package的configure.zcml中,我添加了:

在子包中,我有一个空白的uuu init_uuuuuu.py文件、一个configure.zcml文件和一个名为mymodule.py的文件

在mymodule.py中,我有一行用于导入sqlalchemy

import sqlalchemy
不幸的是,我在尝试运行实例时出错:

ImportError: No module named sqlalchemy
我想我错过了一步。如何正确导入python包

先谢谢你。如果我的术语不正确,我道歉

编辑: 我要从中导入的模块原来是zope.sqlalchemy。
我无意中忽略了这一点,因为在将文件移动到子包之前,zope.sqlalchemy的import语句正在工作,而没有将zope.sqlalchemy添加到构建的eggs部分。

查看包顶部目录下的setup.py文件。您将看到一个类似以下内容的部分:

      install_requires=['setuptools',
         # -*- Extra requirements: -*-
      ],
在“Extra requirements”注释中,放置一个逗号分隔的字符串列表,指定包的要求。您甚至可以指定版本

不要将标准Plone软件包添加到列表中。它们被认为是理所当然的


指定要求后重新运行buildout。结果是,在启动Plone时,新的安装要求将添加到Python环境中。

在buildout.cfg中添加新的egg后是否重新运行buildout?是的。每当我添加到buildout.cfg中时,我都会确保重新运行buildout。我再次这样做是为了以防万一,但不幸的是它没有解决问题。我发现了错误。在导入sqlalchemy的同一个文件中,我也从zope.sqlalchemy导入了一些东西,但它找不到zope的sqlalchemy模块。早些时候,我的文件夹结构不同,我根本没有使用子包。从zope.sqlalchemy导入时,在时间,所以我无意中忽略了需要将zope.sqlalchemy添加到构建文件中。我假设我会遇到类似的问题,但至少我知道如何解决这个问题。