python setup.py直接导入子包
考虑以下最小的python setup.py直接导入子包,python,setup.py,Python,Setup.py,考虑以下最小的setup.py示例 alpha ├── beta │ ├── beta.py │ └── __init__.py ├── gamma │ ├── theta │ │ ├── theta.py │ │ └── __init__.py │ └── __init__.py └── setup.py setup.py定义为 from setuptools import setup setup( name='alpha', author=
setup.py
示例
alpha
├── beta
│ ├── beta.py
│ └── __init__.py
├── gamma
│ ├── theta
│ │ ├── theta.py
│ │ └── __init__.py
│ └── __init__.py
└── setup.py
setup.py定义为
from setuptools import setup
setup(
name='alpha',
author='author',
packages=[
'beta',
'gamma.theta',
],
)
然后,我使用pip install-e.
进行安装,一切正常,即我可以执行import beta
,import gamma
和从gamma import theta
我的问题:是否可以修改
setup.py
,以便我可以直接导入theta
,即import theta
,而不必从gamma import theta使用?您可以将模块放在只包含
from gamma.theta.pkg1.pkg2 import *
并称之为pkg2
。那你就可以了
import pkg2
我想这会让用户很困惑,我还没有测试过,所以我不确定它将如何与大量子包导入一起工作。添加参数并指定包的位置将使您达到您想要达到的程度:
from setuptools import setup
setup(
name='alpha',
author='author',
packages=[
'theta',
],
package_dir={'theta': 'gamma/'}
)
导入gamma.theta怎么样?@reportgunner可以工作,而且看起来不太糟糕,因为这是一个最小的例子,但是在有更多级别的情况下,我希望能够避免像导入gamma.theta.pkg1.pkg2这样的操作,当然,如果可能的话。我得到ValueError:path gamma/不能以“/”结尾
。如果我移除/
安装成功,但我无法导入θ
,我必须使用gamma导入θ
中的或导入gamma.theta
,这不是我要找的。也许我遗漏了什么?是的,也许,我想你可以试着只管理theta
的安装,然后继续,我已经设法在本地进行了工作安装。您可以使用-I标志安装到pip,它告诉它ignore installed
,如下所示:pip install-I-e。