问题描述
考虑以下文件夹结构:
My_Project
|- src
| |- firstmod
| | |- __init__.py
| | |- foo.py
| |- __init__.py
| |- bar.py
|- __init__.py
|- setup.py
bar.py
使用 firstmod.foo
作为导入。例如:
#bar.py
from firstmod import foo
....
目标是将 My_Project
打包为 pypi 包并能够像这样导入它
from my_project import bar
我为 setup.py
尝试了几个配置。第一个版本:
#setup.py 1st version
import setuptools
setuptools.setup(
....
packages = setuptools.find_packages(where="src"),package_dir={'': 'src'},....
)
第二个版本:
#setup.py 2nd version
import setuptools
setuptools.setup(
....
packages = [f'my_project.{elem}' for elem in setuptools.find_packages(where="src")],package_dir={'my_project': 'src'},....
)
在第一个版本中,我可以导入 bar
,但必须在软件包安装后从 src
导入它,如 from src import bar
。
在第二个版本中,我无法像 bar
一样导入 from my_project import bar
,因为我收到了像 ModuleNotFoundError: No module named 'firstmod'
一样的导入错误
我经历了这个 question,但这里所有好的答案都建议更改项目文件夹结构。我不想更改我的项目文件夹结构,因为它非常大。
请帮忙。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)