我在 Cygwin 环境中使用 Python 来开发数据处理脚本和 Python 包 我想积极使用这些脚本,同时更新这些脚本所依赖的包。我的问题是什么是最佳实践,管理模块加载路径的建议,以隔离和测试我的开发更改,但不影响生产脚本的工作。
Python 按以下顺序导入模块(参见 M. Lutz,Learning Python)
- 主目录。
PYTHONPATH目录。- 标准库目录。
- 任何
*.pth文件的内容。
我目前的解决方案是将我的包安装在本地(而不是在 /usr/lib/python2.x/)site-packages 目录中并添加一个 *.pth 文件在全局 site-packages 目录中,因此默认情况下会加载这些文件。在开发目录中,我然后简单地修改 PYTHONPATH 以加载我正在积极处理本地更改的包。
有没有更标准的方法来处理这种情况?设置 virtualenv 或其他一些操作模块加载路径的方法?
请您参考如下方法:
这只是我的意见,但在这种情况下我可能会结合使用 virtualenvs 和 Makefiles/scripts。我没有针对您的特定用例这样做,但我经常为一个项目设置多个 virtualenvs,每个都有不同的 python 版本。然后我可以使用 Makefile 在我的一个或所有 virtualenvs 中运行我的代码或测试。似乎设置一个 makefile 并不会太难,让您键入 make devel 以在开发环境中运行,并为生产环境键入 make production。
或者,您可以使用 git branches 来执行此操作。将您的生产脚本保存在 master 上,并使用功能分支来隔离和测试更改,同时仍然让您的生产脚本只是一个 git checkout master。
