Python设置禁用路径长度限制优点和缺点



我最近安装了Python 3.7,在安装结束时,可以选择"禁用路径长度限制";。我不知道我是否应该这样做。

这样做的利弊是什么?只是从它的声音你应该总是禁用它。

我建议选择该选项,从而取消路径长度限制。它可能会在将来为您节省调试可避免问题的时间。

以下是我是如何了解它的轶事:

在我的程序(Windows机器上的C#代码)的编译过程中,我开始得到以下错误:

error MSB3541: Files has invalid value "longpathfilename". The specified path,
file name, or both are too long. The fully qualified file name must be less than
260 characters, and the directory name must be less than 248 characters.

这个错误不允许我构建我的项目,唯一明显的解决方案是缩短我的路径/文件名。事实证明,这个错误是NTFS(Windows的文件系统)中的一个内置限制:为什么Windows中存在260个字符的路径长度限制?

经过几十年NTFS文件系统的限制,它终于在Windows 10中得到了修复(基于Unix的系统没有它)(https://learn.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-路径长度限制),但它不是自动启用的,并且需要注册表(或组策略)设置才能做到这一点。Python选项允许您为Python库禁用它,省去了很多麻烦。

请注意,启用此选项将,

a) 当使用长文件/目录名和路径时,在使用旧版本Windows 10及更低版本的系统上破坏程序的兼容性。

b) 在使用长文件/目录名和路径时,中断未启用此选项的Windows 10计算机上的程序。

回答您的两个问题:

你应该禁用它吗

快速的答案是,这并不重要,因为这只在使用超过260个字符的路径时才重要,而不是大多数人所做的。

禁用路径长度限制的利弊是什么

优点

  • 使用长度超过260个字符的文件路径时不会出现错误,因此不必担心路径长度
  • 它可以使调试更容易

缺点

  • 禁用它没有负面的技术副作用
  • 如果你在一个团队中工作,它可能会在代码在你的机器上工作而不是在他们的机器上的地方引入错误。因为您禁用了路径限制,但它们没有
  • 禁用它可能会对人类行为产生负面影响。启用长路径可能会导致团队出现不良命名行为关于路径名和文件夹结构。限制迫使人们缩短它们的路径

例如,我在有这样路径的团队中工作过,如果允许他们使用更长的名称,就会导致文件路径的可读性降低:

c:/project_name/university/files/assets/UI/UI_2.0/levelname/season2_levelname/release_tseason2_levelnname_UI_2/project_S2_MENU_UI/project_S2_hover_button_shadow_UI/project_S2-hover_bbutton\ushadow_UI_blue/project

解释

要了解利弊,了解路径长度限制有助于了解。

windows路径长度

您可能已经知道Windows路径是一个字符串,表示在哪里可以找到文件或文件夹。

例如C:Program Files7-Zip

文件夹或文件名越长,字符串越长。

例如C:Program FilesMicrosoft Update Health Tools

其他文件夹中的更多文件夹也会导致更长的字符串

例如C:Program FilesMicrosoft Update Health ToolsLogs

文件路径长度错误

如果您的代码中有很多文件夹,名称很长,那么在尝试使用此路径时可能会遇到错误。

这是因为Windows有路径长度限制。windows 10中的更新允许您禁用此限制。但默认情况下不会这样做。

禁用此限制可以使您的计算机使用更长的路径而不会出现错误。

为什么会发生这种情况

旧的windows API承诺,如果你正确编写应用程序,它将在未来继续工作。

如果Windows允许文件名长度超过260个字符,则现有的应用程序(正确使用Windows API)将失败。

微软确实创造了一种方法来使用完整的32768个路径名;但他们必须创建一个新的API合约来完成这项工作。这是windows10的更新。

阅读更多关于的原因

我保持这个简单而直接的

";禁用路径长度限制";选项是指Windows可以处理的文件路径的最大长度。禁用此限制可以允许更长的文件路径,如果您使用的文件名称很长或存储在深度嵌套的目录中,这将非常有用。然而,它也可能导致与某些程序的兼容性问题,尤其是那些可能不支持长文件路径的旧程序。

通常,除非您有特定的需求,否则通常没有必要禁用路径长度限制。如果您不确定是否需要,最好保持启用状态。

通常,禁用它不是一个好主意,尤其是如果您的程序在禁用它时可能会中断。
我有很多旧程序,可能忘记了我禁用了它,重新启用它的事实(即找出如何启用它),以及执行操作可能会破坏任何在脚本中使用长文件路径的程序,使其关闭毫无帮助,而且可能浪费时间和调试。

但为了保护它的存在,在某些环境中,它可能会有所帮助,尤其是在子文件夹上创建子文件夹是关键的环境中。特别是,当制作一个有大量资产的游戏时,这很有帮助。但是,有很多方法可以缩短子文件夹(和文件),如果不到处复制和粘贴,这样做通常可以更容易地键入路径。(例如,C:my_gameassts1plyrwalk_01.pngC:my_epic_game_featuring_my_awesome_characterassets…更容易键入)

如果您有一台虚拟机或另一个操作系统来尝试此操作,而不必担心特定程序在禁用路径限制时会中断,那么关闭它可能会很有用,但对于其他一切,只需小心可能会产生更多错误而不是修复。

最新更新