簡體   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