【问题标题】:VCS and Python project structure: How to setup the PYTHONPATH automatically?VCS 和 Python 项目结构:如何自动设置 PYTHONPATH?
【发布时间】:2012-10-19 07:01:15
【问题描述】:

网络上有很多关于 Python 项目可以/应该是什么结构的建议,例如What is the best project structure for a Python application?.

"proj-dir"
+- doc
+- apidoc
+- scripts
+- "src-dir"
+- tests

似乎 Python 世界中的许多人更喜欢“src-dir”和“proj-dir”相等(或非常相似)。但是,脚本和测试肯定要从 src-dir 导入一些模块,所以要么我不得不

  • 当 proj-dir 作为我当前的工作目录时运行所有脚本和测试,或者
  • PYTHONPATH 必须包含 proj-dir,对吗?

或者,还有其他我现在忽略的可能性吗?

假设我有这样的结构并且正确设置了 PYTHONPATH。现在我将项目提交到 VCS,另一个开发人员检查项目。在他的机器上,PYTHONPATH 将无法正确设置,并且脚本和测试中的导入将无法正常工作。

  1. 是否有可能以某种方式使 PYTHONPATH 定义成为项目的一部分,从而使其成为版本控制的一部分?
  2. 是否有不同的项目结构可以让我在不修改 PYTHONPATH 的情况下结帐并开始使用该项目?
  3. 这里建议的解决方案是:Python - How to PYTHONPATH with a complex directory structure?(即在每个脚本和测试中包含一个修改 sn-p 的短 sys.path)正确的?
  4. 站点模块http://docs.python.org/2/library/site.html 有帮助吗?
  5. 在开发具有类似结构的项目时,您的工作流程是什么?

【问题讨论】:

    标签: version-control pythonpath project-structure


    【解决方案1】:

    即使项目结构复杂,测试用例在不同的包中使用 src,您也可以在 Windows 的环境变量中添加 PYTHONPATH

    我的电脑 --> 属性 --> 系统属性 --> 高级选项卡 --> 环境变量。添加新的系统变量 PYTHONPATH 并将您的项目目录附加到带有分隔符';'的该变量

    我建议您将 readme.txt 保留到您的项目中,其中清楚地说明了如何添加 PYTHONPATH 以运行脚本。类似于添加android-sdk的PATH使adb shell工作,添加Java路径使Java在命令提示符下工作

    因此 readme.txt 有助于在下载到不同机器时运行脚本,只需进行一次更改(添加 PYTHONPATH 变量,值 = 项目路径)

    不需要添加 src 的所有模块来使使用 src 的测试用例工作

    这是一个示例项目结构:

    SAMPLEPROJECT
        src
          com
            sample
              example
                utils
                  a.py
                  b.py
    
        testcases
          test1.py
          test2.py
    
        res
        docs
    

    如果 test1.py 测试用例使用 a.py 和 b.py: 不要将 utils 模块添加到 PYTHONPATH,因为您已经将项目路径添加到 python 路径您的导入语句在 test1.py 中看起来像这样

    from src.com.sample.example.utils import a.py
    from src.com.sample.example.utils import b.py 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-22
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多