使用与源不同的目录结构打包

时间:2012-11-13 21:04:06

标签: python packaging

如何更改依赖关系路径并部署到不同的目录结构而不是开发?

我的源目录中有以下结构

\ABCE
\ABCE\lib
\ABCE\lib\modulA.py
\ABCE\lib\modulA.py

如果我现在打包python setup.py sdist

我需要用以下方式调用模块:

import lib.moduleA
import lib.moduleB

我该如何避免lib。但保持我的目录结构?所以我用

导入
import moduleA
import moduleB

1 个答案:

答案 0 :(得分:1)

lib选项中列出packages_dir

package_dir = {'': 'lib'}

来自distutils "Writing a Setup Script" documentation

  

如果您使用不同的约定来布置源目录,那就没问题了:您只需提供package_dir选项即可告诉Distutils您的约定。例如,假设您将所有Python源保留在lib下,以便“根包”中的模块(即根本不在任何包中)位于lib中,foo中的模块}包在lib/foo中,依此类推。然后你会把

package_dir = {'': 'lib'}
     在您的设置脚本中

。此字典的键是包名称,空包名称代表根包。值是相对于分发根目录的目录名称。在这种情况下,当您说packages = ['foo']时,您承诺文件lib/foo/__init__.py存在。