2

我是使用 python 进行大型项目的新手。我为我的 python 项目找到了以下文件夹结构:

project
├── doc
├── src
│   ├── hardware
│   ├── devices
│   │   ├── device1
│   │   └── device2
│   ├── measurement
│   ├── ui
│   └── util
└── tests
    ├── hardware
    ├── devices
    │   ├── device1
    │   └── device2
    ├── measurement
    ├── ui
    └── util 

测试文件夹包含源文件夹中模块的单元测试。这是这样一个程序的正确方法吗?

我应该如何进行导入?我想将根文件夹添加到 python 路径并从根路径绝对导入每个模块。我应该这样做吗?

这个程序在几个共同计算机上使用。我应该如何部署它?目前我使用SVN每台计算机都获取整个项目并从那里启动它。有一个缺点,我必须PYTHONPATH在每台计算机上添加项目路径。

4

2 回答 2

2

全球结构对我来说看起来不错。您需要一个模块来编写 setup.py 脚本来安装您的包,例如setuptools。这将允许安装和分发包。另请参阅Pypi以了解包的分发。通常,您可以:

sudo setup.py install

在系统级别安装您的软件包。或者你可以:

sudo setup.py install --prefix=~/local 

在用户级别安装。但是你必须将 ~/local/lib/python/site-packages 添加到你的 PYTHONPATH 中。但是对于该用户安装的所有软件包,只需执行一次。

如果您的包存储在 PyPI 上,您可以在任何机器上执行以下操作:

easy_install mypackage

自动神奇地安装包。

更好的是,您可以使用virtualenv使您的包仅在隔离的 python“虚拟环境”中可见。这使得在同一台计算机上测试各种软件包和版本变得轻而易举。

您还可以在包根级别添加 README 文件等。

于 2012-08-03T09:44:29.503 回答
0

您最好的选择是使用virtualenv, 并有一个setup.py来描述包。

然后,为了开发,在虚拟环境中,只需python setup.py develop在开发模式下安装 egg 就可以了: http ://packages.python.org/distribute/setuptools.html#develop-deploy-the-project-开发模式中的源代码

在生产中,只需使用通常的:(python setup.py install总是在 virtualenv 中)。

于 2012-08-03T10:44:44.450 回答