我正在尝试构建一个具有以下结构的包:
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-packages
,package_bar
无处可见。更奇怪的是,如果我重命名package
目录(比方说,packagee
),它也不会安装。
为了清楚起见,我正试图将package
和package_foo
安装在site-packages
的顶层,如下所示:
import package
import package_foo
有哪些建议要去?
更新:我需要澄清一下,只有当我将软件包上传到本地运行的devpi
服务器时才会出现问题。 python setup.py build
正确地在build/lib.linux-x86_64-2.7/
目录中创建了两个包。
答案 0 :(得分:1)
好的,我已经设法找出问题:事实证明devpi upload
默认使用它在包中找到的任何版本控制系统,并从那里构建分发。由于我的更改尚未提交,因此它继续使用旧代码构建,而旧代码并未包含package_foo
目录。幸运的是,提供了忽略版本控制的选项,因此使用的正确命令是:
devpi upload --no-vcs
当然,我计划在最终版本中正确地对软件包进行版本控制,但仍需要在开发期间构建和上传分发版。