在源代码未组织为 Python 项目时使用 PyDev
Using PyDev when source code is not organized as a Python Project
我已经将 Eclipse 与 PyDev 一起使用了一段时间,我发现 PyDev 是一个非常棒的工具。尽管有一个很大的障碍,我不知道如何解决。问题如下:
我正在使用的源代码是由 Git 控制的版本。存储库结构与典型 Python 项目的结构完全不同。我无法更改存储库的结构,这就像是由于历史原因以及由于不仅 Python 代码存储在存储库中; C/C++、JavaScript、SQL 等源代码与 Python 代码一起在存储库中。此外,大多数使用源代码的其他开发人员不使用 Eclipse 或任何其他 IDE,因此没有改变当前布局的动力。
为了应对这种情况,我创建了一个脚本,该脚本生成一个 Python 目录结构,该目录结构由指向原始源文件的(硬)链接组成。这不是一个好的解决方案,例如每次切换分支时,我都需要重新生成链接。此外 Git 功能,如注释等在链接文件上使用时不起作用。还有很多其他缺点。
这里有两个示例显示了相关存储库中的(缺少)结构:
repository:/components/foopackage/foopackage/barpackage/ 部署为:
命名空间-package.foopackage.barpackage
另一个例子:
repository:/components/foopackage/core/core/ 部署为:
命名空间-package.foopackage
存储库中的实际包名称(或者更确切地说 directory/map 名称)不一定表示 python 包应该如何命名,该信息位于单独的构建系统元中-文件。我上面提到的脚本从这些元文件中导出上述转换。
我认为我需要的是某种方式来定义存储库布局上的逻辑视图转换。
我对有关如何解决此问题的任何建议感兴趣?如果能了解我的选择是什么,那就太好了。
此致,
托马斯
这对 PyDev 来说应该不是问题...有一些替代方法可以解决这个问题:
获取代码并使用与下载代码相同的位置创建一个新项目(如果其他开发者不介意,提交 .project 和 .pydevproject 文件——下次这将是一个文件>导入>现有项目到工作区的问题)。参见:http://pydev.org/faq.html#PyDevFAQ-HowdoIimportexistingprojects%2FsourcesintoPyDev%3F了解详情。
只需在 PyDev 工作区的任意位置创建一个新项目,在配置 PyDev 时在第一个向导页面中就可以 select 'create links to existing sources (select them on the next page)'。然后参考那里现有的资源。
我认为选项 1 更好,因为它在第二次检查代码时更容易 -- 对于选项 2,您必须在不同位置再次克隆项目时重复这些步骤。
更新 1:
鉴于添加了更多信息的更改,我同意...这是一个非常奇怪的设置:)
(即:可能您有很多脚手架只是为了 running/testing 本地代码以及实际名称空间与磁盘布局中的那些更改)
好吧,对于这个用例,我认为拥有一个创建带有符号链接的结构的脚本是唯一可行的选择(这样你就可以真正模仿你在 运行 时拥有的实际命名空间Python),尽管我认为最好的方法是至少让磁盘中 PYTHONPATH 文件夹下的结构与 运行 Python 时的结构相同(如果是这样的话,只需在方法 1 或 2 中设置源文件夹就可以了)——如果你能让你的团队相信这是 Python 项目布局的唯一合理方法:)
我已经将 Eclipse 与 PyDev 一起使用了一段时间,我发现 PyDev 是一个非常棒的工具。尽管有一个很大的障碍,我不知道如何解决。问题如下:
我正在使用的源代码是由 Git 控制的版本。存储库结构与典型 Python 项目的结构完全不同。我无法更改存储库的结构,这就像是由于历史原因以及由于不仅 Python 代码存储在存储库中; C/C++、JavaScript、SQL 等源代码与 Python 代码一起在存储库中。此外,大多数使用源代码的其他开发人员不使用 Eclipse 或任何其他 IDE,因此没有改变当前布局的动力。
为了应对这种情况,我创建了一个脚本,该脚本生成一个 Python 目录结构,该目录结构由指向原始源文件的(硬)链接组成。这不是一个好的解决方案,例如每次切换分支时,我都需要重新生成链接。此外 Git 功能,如注释等在链接文件上使用时不起作用。还有很多其他缺点。
这里有两个示例显示了相关存储库中的(缺少)结构:
repository:/components/foopackage/foopackage/barpackage/ 部署为: 命名空间-package.foopackage.barpackage
另一个例子:
repository:/components/foopackage/core/core/ 部署为: 命名空间-package.foopackage
存储库中的实际包名称(或者更确切地说 directory/map 名称)不一定表示 python 包应该如何命名,该信息位于单独的构建系统元中-文件。我上面提到的脚本从这些元文件中导出上述转换。
我认为我需要的是某种方式来定义存储库布局上的逻辑视图转换。
我对有关如何解决此问题的任何建议感兴趣?如果能了解我的选择是什么,那就太好了。
此致, 托马斯
这对 PyDev 来说应该不是问题...有一些替代方法可以解决这个问题:
获取代码并使用与下载代码相同的位置创建一个新项目(如果其他开发者不介意,提交 .project 和 .pydevproject 文件——下次这将是一个文件>导入>现有项目到工作区的问题)。参见:http://pydev.org/faq.html#PyDevFAQ-HowdoIimportexistingprojects%2FsourcesintoPyDev%3F了解详情。
只需在 PyDev 工作区的任意位置创建一个新项目,在配置 PyDev 时在第一个向导页面中就可以 select 'create links to existing sources (select them on the next page)'。然后参考那里现有的资源。
我认为选项 1 更好,因为它在第二次检查代码时更容易 -- 对于选项 2,您必须在不同位置再次克隆项目时重复这些步骤。
更新 1:
鉴于添加了更多信息的更改,我同意...这是一个非常奇怪的设置:)
(即:可能您有很多脚手架只是为了 running/testing 本地代码以及实际名称空间与磁盘布局中的那些更改)
好吧,对于这个用例,我认为拥有一个创建带有符号链接的结构的脚本是唯一可行的选择(这样你就可以真正模仿你在 运行 时拥有的实际命名空间Python),尽管我认为最好的方法是至少让磁盘中 PYTHONPATH 文件夹下的结构与 运行 Python 时的结构相同(如果是这样的话,只需在方法 1 或 2 中设置源文件夹就可以了)——如果你能让你的团队相信这是 Python 项目布局的唯一合理方法:)