Python包和模块版本管理

时间:2013-04-21 03:10:18

标签: python version-control python-import

我打算使用多个软件包(内部和外部)开发一个中等规模的Web应用程序(有很多后端工作),因为这是我第一次体验这种规模,我可以得到一些建议:

  1. 如何确保所有依赖项都得到满足(不需要包/模块,从正确的位置导入包等)。
  2. 如何管理软件包/模块的版本。我希望能够在其他连接的软件包/模块中引入新版本的软件包/模块,并且代码更改最少。
  3. 如果有一个可以提供帮助的工具,请告诉我。 如果在管理具有此规模的代码时出现任何其他挑战(我可能甚至不知道),请提醒我并提供解决方法。

    我目前所知道的(并认为它可能有助于代码管理):

    • __all__定义可导出模块。
    • 使用前面的单下划线来防止导入模块
    • __init__.py来管理包级别的导入(因此,当我执行import package_name时,__init__.py可以集中控制其他导入)
    • PEP 328管理相关导入,importlib和其他类似的东西围绕导入。
    • 我想一些第三方软件包还定义了__version__VERSION变量来检查运行时的版本,但我不确定我是否可以依赖它。

    如果有书籍,博客等可以提供帮助,请告诉我们。

    编辑:我不确定这类问题是否符合此类问题。如果没有,那么我道歉。

1 个答案:

答案 0 :(得分:0)

  

如何确保所有依赖项都得到满足(没有丢失必需的包/模块,从正确的位置导入包等)。

virtualenvfreezepip个软件包用于requirements文件:

$ pip freeze > requirements.txt
$ cat requirements.txt
argparse==1.2.1
distribute==0.6.31
wsgiref==0.1.2

基本上,只要你有一些需要安装模块的代码,就可以使用virtualenv,分发和pip。

根据requirements.txt

中指定的版本安装软件包
pip install -r requirements.txt