如何将python src文件夹重命名为pypi包的项目名称?

问题描述

考虑以下文件夹结构:

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 (将#修改为@)