Python setuptools:即使通过find_packages找到也未安装的软件包

时间:2015-03-19 14:22:20

标签: python setuptools distutils

我正在尝试构建一个具有以下结构的包:

main-dir/
    setup.py
    package/
        __init__.py
        bar/
            __init__.py
        baz/
            __init__.py
    package_foo/
        __init__.py
        boo/
            __init__.py

find_packages()中使用setup.py我会得到正确的包列表,例如:

[
    'package',
    'package.bar',
    'package.baz',
    'package_foo',
    'package_foo.boo',
]

但是,当我安装软件包时,我只在package目录中安装site-packagespackage_bar无处可见。更奇怪的是,如果我重命名package目录(比方说,packagee),它也不会安装。

为了清楚起见,我正试图将packagepackage_foo安装在site-packages的顶层,如下所示:

import package
import package_foo

有哪些建议要去?

更新:我需要澄清一下,只有当我将软件包上传到本地运行的devpi服务器时才会出现问题。 python setup.py build正确地在build/lib.linux-x86_64-2.7/目录中创建了两个包。

1 个答案:

答案 0 :(得分:1)

好的,我已经设法找出问题:事实证明devpi upload默认使用它在包中找到的任何版本控制系统,并从那里构建分发。由于我的更改尚未提交,因此它继续使用旧代码构建,而旧代码并未包含package_foo目录。幸运的是,提供了忽略版本控制的选项,因此使用的正确命令是:

devpi upload --no-vcs

当然,我计划在最终版本中正确地对软件包进行版本控制,但仍需要在开发期间构建和上传分发版。