Python setuptools-从相对路径从框架捆绑包

Python setuptools-从相对路径从框架捆绑包,python,package,setuptools,Python,Package,Setuptools,项目设置如下所示: --------------------- root FrameworkPackage1 __init__.py sourcefile1.py FrameworkPackage2 __init__.py sourcefile2.py apps Project src MyApp __init__.py

项目设置如下所示:

---------------------
root
   FrameworkPackage1
      __init__.py
     sourcefile1.py

   FrameworkPackage2
      __init__.py
      sourcefile2.py
   apps
       Project
           src
               MyApp
                   __init__.py
                   __main__.py
           setup.py
           README.md
---------------------
当我创建setup.py时,据我所知,我使用package\u dir设置这些包的位置

---------------------
    packages=['MyApp', 'FrameworkPackage1', 'FrameworkPackage2'],
    package_dir={'': 'src',
                 'FrameworkPackage1': '../../FrameworkPackage1',
                 'FrameworkPackage2': '../../FrameworkPackage2'}
---------------------
因此,这将正确地构建包含所有必需文件的包。但是,当我尝试安装时,它失败了,如果我只是尝试卸载包文件,它会将FrameworkPackage1/2放入解压所在的“../....”目录中

理想情况下,我希望软件包按如下方式工作,并从pip安装,以便运行以下程序:

import MyApp as ma
import FrameworkPackage1 as fp1
import FrameworkPackage2 as fp2

print(ma.Function())
print(fp1.OtherFunction())
print(fp2.OtherFunction())

有没有办法将框架设置为在“../../../”中找到,但安装到发行版的根目录中?

首先,正如@a\u guest建议的那样,
包目录不应该是这样的吗

packages=['MyApp', 'FrameworkPackage1', 'FrameworkPackage2'],
package_dir={'': 'src',
             'FrameworkPackage1': '../../FrameworkPackage1',
             'FrameworkPackage2': '../../FrameworkPackage2'}
或者,您可以尝试将
\uuuu init\uuuu.py
添加到
根文件夹中,以便将其识别为python文件夹(基于)

其次,您可以:

  • 如果框架包在其他地方使用:分别对待每个包。这将允许您单独开发它们,并将它们添加到您的
    MyApp
    ,只需将它们包含在
    requirements.txt
    (或等效文件)中即可。缺点是每一个都有自己的setup.py,但这是一个
  • 如果框架包未在其他地方使用(或者您只需要本地副本):直接切换到主文件夹中带有
    setup.py
    的项目设置(
    package\u dir={'':'src','FrameworkPackage1':'src','FrameworkPackage2':'src}
    ,结构如下:

看看这个答案是否对你有帮助,你可能有点做错了。你不应该做
'FrameworkPackage1':'../../../FrameworkPackage1'
?我的意思是
。/../../../../
带你到
根目录的父目录。或者你的目录布局显示有问题吗?是的!对不起..这是我考试中的一个错误现在我将编辑并更新
---------------------
...
       Project
           src
               MyApp
                   __init__.py
                   __main__.py
               FrameworkPackage1
                   __init__.py
                   sourcefile1.py
               FrameworkPackage2
                   __init__.py
                   sourcefile2.py
           setup.py
           README.md
---------------------