假设您正在处理一个python包。以下是包的结构(以分层文件系统表示):
/PackageName
/src
__init__.py
/subpackage1
__init__.py
module1a.py
module1b.py
/subpackage2
__init__.py
module2a.py
module2b.py
/tests
INSTALL
LICENSE
README
setup.py
Distutils用于构建、分发和安装软件包。在安装脚本中,可以告诉Distutils关于我的布局源目录的约定(请参见here)。简言之,我要说:
package_dir = {'packagename', 'src'}
但是,例如module1a
需要使用绝对导入来导入module2a
时存在一个问题(请参见here)。简言之,我要说module1a
:
import src.module2a
一旦软件包随pip
一起分发和安装,一个简单的:
import packagename
提出:
ImportError: No module names src.module2a
一个简单的解决方案是将src
目录重命名为packagename
,但是(正如我的问题明确指出的那样)是否有一个解决方案可以使用不同的约定来布局源目录(可能是我错过的distutils
或pip
选项)
先谢谢你
将您的包裹注册到:
并在
src
中创建一个packagename
目录。您想要导入packagename
,而不是src
src
并不意味着它本身就是一个包:您可以在模块之间使用相对导入,但现在可以使用绝对导入
或者可以使用相对导入:
实际项目示例:https://github.com/mjpieters/collective.transmogrifier
相关问题 更多 >
编程相关推荐