Version control VCS和Python项目结构:如何自动设置Python路径?

Version control VCS和Python项目结构:如何自动设置Python路径?,version-control,pythonpath,project-structure,Version Control,Pythonpath,Project Structure,网上有很多关于Python项目的结构可以/应该是什么的建议,例如 Python世界中的许多人似乎更喜欢“src dir”和“proj dir”相等(或非常相似)。但是,脚本和测试肯定必须从src dir导入一些模块,因此我必须 当proj dir作为当前工作目录时,运行所有脚本和测试,或 PYTHONPATH必须包含proj目录,对吗 或者,还有其他我现在忽略的可能性吗 假设我有这样的结构,并且正确地设置了蟒蛇路径。现在,我将项目提交给VCS,另一个开发人员检查该项目。在他的机器上,PYTH

网上有很多关于Python项目的结构可以/应该是什么的建议,例如

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

  • 当proj dir作为当前工作目录时,运行所有脚本和测试,或
  • PYTHONPATH必须包含proj目录,对吗
或者,还有其他我现在忽略的可能性吗

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

  • 是否有可能以某种方式使PYTHONPATH定义成为项目的一部分,从而使其成为版本控制的一部分
  • 是否有一个不同的项目结构允许我在不修改PYTHONPATH的情况下进行签出并开始使用该项目
  • 这里建议的解决方案是:(即在每个脚本和测试中包含一个简短的sys.path修改代码段)正确的吗
  • 站点模块是否有帮助
  • 开发具有类似结构的项目时,您的工作流程是什么

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

    我的计算机-->属性-->系统属性-->高级选项卡-->环境变量。添加新的系统变量PYTHONPATH,并使用分隔符“;”将您的projects dir附加到该变量

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

    因此,readme.txt有助于在不同的机器上下载时运行脚本,只需一次更改(添加值为projectpath的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中,因为您已经将项目路径添加到PYTHONPATH中。您的import语句在test1.py中类似于此

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