在Python中如何简洁明确地设置导入路径?

2 投票
2 回答
1496 浏览
提问于 2025-04-15 11:34

如果一群Python开发者想把他们共享的代码放在一个有层次结构的地方,应该怎么组织这个结构?相关的“导入”语法又是什么呢?

在Python中,像Java那样的引用方式也能用吗?也就是说,文件夹和点之间是对应的关系吗?

对于一个只供内部使用的Python库,标准的设置是什么?从这个库中导入代码的语法又是怎样的呢?比如说,深度有3层的情况下。

我看过《学习Python》,了解了PYTHONPATH,最近几周一直在玩代码,觉得很有趣,但在“导入”方面除了简单的例子外,我还是搞不太明白。如果问题太笼统,请把我送回书本学习。

2 个回答

7

我们在做什么。

开发

  • c:\someroot\project\thing__init__.py # 让thing变成一个包

  • c:\someroot\project\thing\foo.py

  • c:\someroot\project\thing\bar.py

我们的“环境”(以多种方式设置)

SET PYTHONPATH="C:\someroot\project"

我们正在处理的某个文件

 import thing.foo
 import thing.bar

部署

  • /opt/someroot/project/project-1.1/thing/init.py # 让thing变成一个包

  • /opt/someroot/project/project-1.1/thing/foo.py

  • /opt/someroot/project/project-1.1/thing/bar.py

我们的“环境”(以多种方式设置)

SET PYTHONPATH="/opt/someroot/project/project-1.1"

这允许多个版本可以并排部署。

每个不同的“thing”都被设计成独立的、可重复使用的包。

3

如果一群Python开发者想把他们共享的代码放在某个地方,并且希望有一个层级结构,那么这个结构应该是什么样的,相关的“导入”语法又是什么呢?

你可以把它放在你的C:\python26\Lib\site-packages\目录下,创建一个属于你自己的文件夹。

在这个文件夹里,你需要放一个叫做__init__.py的文件,这个文件在你导入时会被运行,可以留空。

那种Java风格的引用在Python中也适用吗?也就是说,目录和点号是对应的吗?

是的,只要这些目录里有__init__.py文件,就可以。

对于仅供内部使用的Python代码库,标准的设置是什么样的?从这个库区域导入的语法又是什么样的,比如说有3层深?

MyCompany/MyProject/ -> import MyCompany.MyProject

撰写回答