解释Python的站点包.我把库放在那里吗?

Sha*_*Cop 4 python import ironpython

我最近发现了一个以Python为代码库的新项目.我之前从未做过Python - 来自C/C++编译代码世界.我遇到了一些了解我当前代码库的问题.

当我们编写代码时,我们有我们的库(比其他代码更通用的组件),以及我们的应用程序代码(应用该库的代码),对吧?在我以前参与过的项目中,我会将我的库代码和应用程​​序保存在一个项目文件夹中的包含文件夹中.在C/C++版本中,会有一个makefile(或一些make系统)将所有内容挂钩在一起,以便包含所有适当的工作.

    Project/
           Library/
                   Utilities.cpp
           Application/
                   Main.cpp
           makefile
Run Code Online (Sandbox Code Playgroud)

我现在进入的项目在site-packages文件夹中有自己的库,该文件夹本身位于IronPython/Python系统文件夹中.该库代码是我们的,并且仍然是"热门"并正在进行中.应用程序代码在系统的其他位置.

这似乎是糟糕的设计,但我的同行们坚持认为这只是"Python的工作方式".Python支持包含/导入.难道一切都不应该是自给自足的吗?像这样分散代码似乎很奇怪.

谢谢!

ros*_*dia 7

Python库通常通过distutilssetuptools安装.这些实用程序将库安装在python的site-packages文件夹中,这是python在import x遇到语句时知道查找库的地方.

直接在site-packages文件夹中开发代码似乎有点奇怪,尽管技术上没有任何问题.通常,你会有这样的事情:

./app1.py
./lib1/__init__.py
./lib1/lib1.py
./lib2/__init__.py
./lib2/lib2.py
...etc
Run Code Online (Sandbox Code Playgroud)

然后,当您准备好打包库时,可以使用上面提到的一个util来执行此操作(然后将lib安装到其中site-packages).

所以,回答你的问题:没有硬性规定.我认为大多数python开发人员都不喜欢直接开发site-packages.

*Setuptools还有一个名为的命令develop,用于安装指向开发库的链接site-packages.我已经使用了几次,效果很好.