gpt4 book ai didi

python - 使用不同目录中的源代码构建 Python 包

转载 作者:行者123 更新时间:2023-12-05 02:58:00 25 4
gpt4 key购买 nike

当构建源代码树如下所示的 python 包时:

src -\
+- module -\
<stuff>
+- setup.py

很清楚。

是否可以构建模块源与 setup.py 不在同一位置的包?对于更具体的用例,模块的代码部分或全部在 src

以外的位置自动生成

例如

src -\
+- setup.py
generated -\
module -\
<module code>

最佳答案

您可以使用 setup(...)package_dir 参数来控制包所在的目录

虽然当 package_dir 是一个以 .. 开头的相对路径时,它似乎确实构建了一个正确的源代码分发,但似乎 pip将拒绝安装它——我建议您将生成的代码嵌套在 src 目录中,然后使用 package_dir 选择它。

这是一个将 所有 模块移动到 generated 子目录中的示例:

setup(
name='mypkg',
package_dir={'': 'generated'},
packages=find_packages('generated'),
)

使用如下设置:

$ tree .
.
├── generated
│   ├── mod1
│   │   └── __init__.py
│   └── mod2
│   └── __init__.py
└── setup.py

这将使以下操作在安装后成功:import mod1;导入 mod2

如果你想让这些模块在不同的前缀下可用,你会这样做:

setup(
name='mypkg',
package_dir={'hello': 'generated'},
packages=[f'hello.{mod}' for mod in find_packages('generated')],
)

这将使 import hello.mod1; import hello.mod2 安装成功

关于python - 使用不同目录中的源代码构建 Python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59437839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com