对setup.py中的package_dir和packages设置感到困惑

时间:2013-06-17 20:02:38

标签: python distutils

这是我的项目目录结构,其中包括项目文件夹 一个“框架”文件夹,包含多个项目共享的包和模块 它与层次结构中的项目文件夹位于同一级别:

--------------------------------------------------------------
Framework/
    package1/
        __init__.py
        mod1.py
        mod2.py
    package2/
        __init__.py
        moda.py
        modb.py

My_Project/
    src/
        main_package/
             __init__.py
             main_module.py
    setup.py
    README.txt
--------------------------------------------------------------

以下是我的setup.py文件内容的部分列表:

--------------------------------------------------------------
from distutils.core import setup

setup(packages=['package1',
        'package2.moda',
        'main_package'],
    package_dir={'package1': '../Framework/package1', 
        'package2.moda': '../Framework/package2', 
        'main_package': 'src/main_package'})

--------------------------------------------------------------

以下是问题:

  1. 没有创建dist或构建目录

  2. 创建了清单文件,但列出了package2中的所有模块,而不仅仅是“moda.py”模块

  3. 构建终止时出现错误: README.txt:功能不正确

  4. 我不知道我是否有一个问题(可能与我的目录结构有关)或者我是否有多个问题,但我已经阅读了有关Python应用程序分发的所有内容,而且我很难过。< / p>

2 个答案:

答案 0 :(得分:3)

IIUC正确地,package_dir中的路径应该停在Python包目录的父目录中。我试试这个:

package_dir={'package1': '../Framework', 
             'package2': '../Framework', 
             'main_package': 'src'})

答案 1 :(得分:2)

我遇到了类似的问题,通过指定根文件夹和根中的包解决了这个问题。

我的包具有以下结构:

.
├── LICENSE
├── README.md
├── setup.py
└── src
    └── common
        ├── __init__.py
        ├── persistence.py
        ├── schemas.py
        └── utils.py

setup.py 包含 package_dirpackages 行:

package_dir={"myutils": "src"},
packages=['myutils.common'],

运行 python setup.py bdist_whell 并安装 .whl 文件后,可以使用以下命令调用包:

import myutils.common