使用 setuptools 的 python 替代包设置 [英] python alternative package setup using setuptools

查看:47
本文介绍了使用 setuptools 的 python 替代包设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用我的特定设置添加包时遇到了一些问题:

<预><代码>.├── pkg_a│ ├── pkg_a│ │ ├── __init__.py│ │ └── module_a.py│ └── run_a.py├── pkg_b│ ├── pkg_b│ │ ├── __init__.py│ │ └── module_b.py│ └── run_b.py└── setup.py

我的目标是能够在不重复包名两次的情况下导入包模块.
例如,在 run_a.py 中,我希望能够调用 from pkg_a import module_a 而不是调用 from pkg_a.pkg_a import module_a

我尝试按照 here.通过创建 setup.py 如下:

from setuptools import setup设置(名称=测试",包=['pkg_a','pkg_b'],package_dir={'pkg_a':'pkg_a/pkg_a', 'pkg_b':'pkg_b/pkg_b'})

但这并没有达到上面提到的预期效果,因为我试图调用 python setup.py develop 然后 python -c 'from pkg_a import module_a'.
这个特殊的设置可以实现吗?我在这里搞砸了什么?谢谢大家!

解决方案

package_dir 修改不适用于 editable(又名 develop)安装.可编辑安装唯一可接受的package_dir修改是覆盖所谓的src-layout:

 package_dir={'': 'src'},

I am having some trouble adding packages with my particular setup:

.
├── pkg_a
│   ├── pkg_a
│   │   ├── __init__.py
│   │   └── module_a.py
│   └── run_a.py
├── pkg_b
│   ├── pkg_b
│   │   ├── __init__.py
│   │   └── module_b.py
│   └── run_b.py
└── setup.py

My goal is to be able to import package modules without repeating package name twice.
For example, in run_a.py I'd like to be able to call from pkg_a import module_a instead of calling from pkg_a.pkg_a import module_a

I tried to follow Section 2.1 of doc here. By creating setup.py as follow:

from setuptools import setup

setup(
    name="test",
    packages=['pkg_a', 'pkg_b'],
    package_dir={'pkg_a':'pkg_a/pkg_a', 'pkg_b':'pkg_b/pkg_b'}
)

But this does not achieve the desired effect as mentioned above as I tried to call python setup.py develop and then python -c 'from pkg_a import module_a'.
Is this particular setup achievable? And what am I messing up here? Thanks all!

解决方案

package_dir modifications do not work with editable (aka develop) installations. The only acceptable package_dir modification for editable installations is the one that covers the so-called src-layout:

    package_dir={'': 'src'},

这篇关于使用 setuptools 的 python 替代包设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆