Python导入具有不同的目录结构

Python导入具有不同的目录结构,python,import,directory-structure,Python,Import,Directory Structure,我正在开发一个将源代码树中的所有代码分离到模块目录中的程序,例如: modules/check/lib/check.py modules/edit/lib/edit.py 在安装过程中,Python文件被放在Python的站点包下的相同目录程序名。因此,所有模块都使用语法import program\u name.edit 由于目录和导入结构的原因,源模块无法相互导入,因此每次要运行源代码树中的任何内容时都必须安装它们 因此,我的问题是:在不修改目录结构的情况下,如何确保modules/che

我正在开发一个将源代码树中的所有代码分离到模块目录中的程序,例如:

modules/check/lib/check.py
modules/edit/lib/edit.py
在安装过程中,Python文件被放在Python的
站点包
下的相同目录
程序名
。因此,所有模块都使用语法
import program\u name.edit

由于目录和导入结构的原因,源模块无法相互导入,因此每次要运行源代码树中的任何内容时都必须安装它们


因此,我的问题是:在不修改目录结构的情况下,如何确保
modules/check/lib/check.py
modules/edit/lib/edit.py
导入,以及
站点包/program\u name/check.py
站点包/program\u name/edit.py
导入?对于可能的重组,在这样的环境中,目录结构和导入的最佳实践是什么?

为什么不在dev机器上的
prog\u name
下面安装符号链接?

您只需将
/modules/
目录添加到dev环境中的PYTHONPATH中即可。在站点软件包中安装后,在check.py内调用
import edit
将导入正确的模块,因为它们位于同一目录中。从您的开发环境中调用
import edit
将导入您添加到PYTHONPATH中的文件

,然后我必须维护到源代码树中每个Python文件的符号链接。此外,我希望能够使用当前的构建过程,在
网站包中获得最新的更新,而不是在我更新源代码树中的内容时。因此,如果我正确理解您的所有评论,(1)您不希望这些模块的源版本对Python安装的其余部分可见,只希望最后安装的版本可见。另外(2)您不想更改源文件中的导入语法,它们应该使用与安装时相同的导入语法(我假设没有条件导入)。尽管如此(3)源模块应相互导入源版本。我不认为(1)-(3)是可以共同满足的。请更新您的问题-它表明它们在站点包/progam\u name/check.py和站点包/program\u name/edit.py中,对吗?如果您在PYTHONPATH中添加
modules/check/lib/
modules/edit/lib/
,您可以调用
import check
import edit
我无法更改导入语法,至少现在是这样。该软件由10多人开发。您应该向您的团队建议更改语法,调用
import program\u name。检查
不是必需的,而且也会使开发变得困难。我认为,与更改目录结构相比,这是一个很小的重构。由于您的开发结构与安装结构不匹配,唯一干净的处理方法是通过PYTHONPATH。