繁体   English   中英

python 中的 setup.py:如何安装子包?

[英]setup.py in python: how to install subpackages?

考虑以下 package 结构:

src/
   /__init__.py
   bar.py
   /foo
       /__init__.py
       foobar.py

我想写一个 setup.py 这样如果我这样做:

pip install -e .

从根目录开始,以下所有操作都将起作用:

import src
import src.foo
import foo

我可以使用例如 find_namespace_packages 轻松实现前两个,但是我尝试了 find_namespace_packages()、find_packages()、package_dir 的各种组合,也能够在不指定前缀(即 src.foo)的情况下导入子包 foo成功。 我该怎么做呢?

也许我错了,但我相当肯定你不能用你构建/打包你的回购的方式。 Python 将在src中查找,并且每个__init__.py都允许对其进行索引,因此它被认为是同一个 package 的一部分。 此外,还有潜在的命名空间冲突。 如果你有csv而不是foo怎么办? 这将破坏 python 的默认csv库。 通过指定src.foo可以明确定义foo的位置。

我能想到的唯一方法是将您的代码放在两个单独的存储库中,并且foo在 PyPI 上可用(即pip install foo )。 将其添加到您的requirements.txt之后,您可以执行以下操作:

import foo

src/__init__.py中。 这将允许您拥有: src.foofoo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM