Python 导入子包时获取包版本

Python 导入子包时获取包版本,python,python-import,Python,Python Import,我有一个git回购协议,我把它变成了一个包(根据这些) 它的文件层次结构是 git_repo_name\folder1\functions1.py contaning func1a,func1b git_repo_name\folder1_init_uu.py git_repo_name\folder2\functions2.py包含func2a,func 2b,包含func2ca,func 1b git_repo_name\folder2_init_uu.py git\u repo\u na

我有一个git回购协议,我把它变成了一个包(根据这些) 它的文件层次结构是

  • git_repo_name\folder1\functions1.py contaning func1a,func1b
  • git_repo_name\folder1_init_uu.py
  • git_repo_name\folder2\functions2.py包含func2a,func 2b,包含func2ca,func 1b
  • git_repo_name\folder2_init_uu.py
  • git\u repo\u name\u init\upy.git\u repo\u name\setup.py
  • git\u repo\u name\requirements.txt
我想这样进口

from git_repo_name.folder2 import func2a, func 2b

因为这样我就可以导入rapo_名称并使用

import repo_name
git_repo_name.__version__
但我的导入工作是这样的:

from folder2.functions2 import func2a
我无法让folder1和folder2从git_repo_name\setup.py中回显git_repo_name版本 我尝试添加以下代码 到git_repo_name\folder1_init_.py和到git_repo_name\folder2_init_.py

但是
git\u repo\u name.\uu版本
folder2.\uu版本
git\u repo\u name.folder2.\uu版本
都失败

  • 需要在我的文件层次结构中更改什么以允许导入第一个表单

  • 如何让“文件夹”模块了解其版本


  • 谢谢

    允许这样做的正确文件结构是 git_repo_name\package_name\folder1
    git_repo_name\package_name\folder2
    git\u repo\u name\u init\uy.py git\u repo\u name\setup.py

    在我的例子中,package_name是git_repo_name

    这允许

    import package_name
    package_name.__version__
    
    from pkg_resources import get_distribution, DistributionNotFound
    import os.path
    try:
        _dist = get_distribution('git_repo_name')
        dist_loc = os.path.normcase(_dist.location)
        here = os.path.normcase(__file__)
        if not here.startswith(os.path.join(dist_loc, 'git_repo_name')):
            raise DistributionNotFound
        except DistributionNotFound:
        __version__ = 'Please install this project with setup.py'
    else:
        __version__ = _dist.version
    
    import package_name
    package_name.__version__