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
---------------------