在Python中如何简洁明确地设置导入路径?
如果一群Python开发者想把他们共享的代码放在一个有层次结构的地方,应该怎么组织这个结构?相关的“导入”语法又是什么呢?
在Python中,像Java那样的引用方式也能用吗?也就是说,文件夹和点之间是对应的关系吗?
对于一个只供内部使用的Python库,标准的设置是什么?从这个库中导入代码的语法又是怎样的呢?比如说,深度有3层的情况下。
我看过《学习Python》,了解了PYTHONPATH,最近几周一直在玩代码,觉得很有趣,但在“导入”方面除了简单的例子外,我还是搞不太明白。如果问题太笼统,请把我送回书本学习。
2 个回答
我们在做什么。
开发
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”都被设计成独立的、可重复使用的包。
如果一群Python开发者想把他们共享的代码放在某个地方,并且希望有一个层级结构,那么这个结构应该是什么样的,相关的“导入”语法又是什么呢?
你可以把它放在你的C:\python26\Lib\site-packages\目录下,创建一个属于你自己的文件夹。
在这个文件夹里,你需要放一个叫做__init__.py的文件,这个文件在你导入时会被运行,可以留空。
那种Java风格的引用在Python中也适用吗?也就是说,目录和点号是对应的吗?
是的,只要这些目录里有__init__.py文件,就可以。
对于仅供内部使用的Python代码库,标准的设置是什么样的?从这个库区域导入的语法又是什么样的,比如说有3层深?
MyCompany/MyProject/ -> import MyCompany.MyProject