在同一台计算机上开发和使用相同的Python

2024-05-20 08:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Python实用程序模块来帮助文件下载、归档等。我在一个虚拟环境中建立了一个项目以及我的单元测试。当我想在同一台计算机上使用这个模块时(本质上是“生产”),我将文件移到~/dev/modules/mymodulemymodule的mymodule

我将所有第三方模块保存在~/dev/modules/contrib下。这个contrib路径在我的PYTHONPATH上,但是mymodule不是因为我注意到如果mymodule在PYTHONPATH上,我的单元测试无法区分“开发”版本和“生产”版本。但是现在如果我想使用这个公共工具模块,我必须手动将它添加到PYTHONPATH中。在

这是可行的,但我相信有更好的,更自动化的方法。在

在同一台计算机上安装开发和生产模块的最佳方式是什么?例如,有没有一种方法可以动态地设置PYTHONPATH?在


Tags: 模块项目方法dev版本modules计算机虚拟环境
3条回答

您可以在sys.path添加/修改python路径,只要确保第一个路径是当前目录".",因为有些第三方模块依赖于从当前模块的目录导入。在

有关python路径的详细信息: http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html

您可以将PYTHONPATH设置为指向生产代码的全局环境变量,然后在任何要使用开发代码的shell中,将PYTHONPATH更改为指向该代码。在

(这是不是太简单了?我错过了什么吗?)在

我猜你说的虚拟环境是指VirtualEnvironment?在

http://pypi.python.org/pypi/virtualenv

我想做的是(如果我没有正确理解问题,我会道歉)是:

  • 将源代码保存在PYTHONPATH没有引用的地方(例如~/projects/myproject)
  • 编写一个简单的setuptools或distutils脚本来安装它(请参见Python distutils - does anyone know how to use it?
  • 使用virtualenv包创建一个带有no site packages选项的dev虚拟环境,这样您的“dev”版本将看不到默认python安装中安装的任何包。在
  • (还要确保PYTHONPATH没有任何源目录)

然后,为了测试:

  • 激活开发人员虚拟环境
  • 运行安装脚本(通常类似python设置.py构建-安装)。您的包在/path/to/dev_virtualenv/lib/python2.x/site-packages/中结束
  • 测试、中断、修复、重复

对于生产:

  • 确保未激活dev virtualenv
  • 运行安装脚本
  • 一切都很好,“开发”版本隐藏在一个虚拟环境中,生产看不到。。。在
  • …而且没有(直接)和Python混在一起

也就是说,我写这篇文章的时候,我对一个没试过在愤怒中使用virtualenv的人充满信心,希望我能模糊地理解你的问题。。。;)

相关问题 更多 >