Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python setup.py直接导入子包_Python_Setup.py - Fatal编程技术网

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。