【问题标题】:Strawberry Perl: forgets environment variables?Strawberry Perl:忘记环境变量?
【发布时间】:2023-03-24 17:00:02
【问题描述】:

我在运行 Windows XP 的 Strawberry Perl 中安装了一些模块,例如:

  • 正则表达式::通用
  • URI::Find::Schemeless

这些库在安装每个模块后第一次直接在我的 perl 代码中正常工作。

问题是我在接下来的每一天运行我的脚本,它们都会失败并出现以下错误:

无法在 @INC 中找到 Regexp/Common.pm(@INC 包含:C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib。)

我已将所有适当的路径放入 Windows 中的环境变量中:PERL5LIB 和其他诸如 lib,这些路径在 stackoverflow 和其他处理模块安装的其他网站上的各种其他答案中被建议。 除非我执行以下我想出的解决方法,否则脚本会继续失败:

  1. 在 Windows 中打开“编辑环境变量”窗口。 (“我的电脑”->“属性”->“高级”选项卡->“环境变量”)
  2. 不添加或更改任何内容,单击“确定”。
  3. 重新打开任何已打开的 perl 控制台或打开一个新的 perl 窗口。
  4. 现在找到的库都没有问题。

有人知道为什么会发生这种情况吗?我怀疑它可能与 Windows/cmd 甚至我公司的 Windows 环境设置特别相关?

任何建议都将不胜感激,因为这是一个非常烦人的问题!

【问题讨论】:

  • 如果这是一台公司计算机,我不会惊讶地发现每天运行系统管理服务脚本来恢复某些环境更改。如果是这种情况,那么在使用 set PERL5LIB=whatever 等调用 perl 脚本之前,您可能需要将 perl 脚本包装在一个明确设置这些变量的批处理文件中。
  • echo %PERL5LIB% 在 Perl 控制台中运行时会打印什么?
  • @cjm - 它说 c:\strawberry\lib;c:\strawberry\c\lib;c:\strawberry\perl\lib;c:\strawberry\perl\site\lib;c :\strawberry\perl\vendor\lib 这是库所在的位置。在我也做了一点“解决方法”之后,它就这么说了。真的很奇怪!
  • 您使用的是什么版本的 Windows?我发现至少在 Vista (pcreview.co.uk/forums/…) 上发生了这种情况的报告,所以这不是一个完全独特的问题,但我没有找到解决方案。无论如何,这不是编程问题,所以它不属于 SO。

标签: windows perl environment-variables perl-module strawberry-perl


【解决方案1】:

默认情况下,Windows 不会每天清除环境变量,因此您的公司设置中可能会重置环境变量。

如果是这种情况,您有几个选择:

  1. 让网络管理员修改脚本,使其不会重置它们(或包含您要指定的 PERL5LIB 目录)。
  2. 编写另一个日常任务,在他们的日常任务之后运行,这会在您的本地计算机上重新添加变量。
  3. 使用 Windows 批处理文件包装您的 perl 脚本,或使用 perl -I 运行它们以在运行时指定库。
  4. 从 Cygwin bash 或 mingw bash 运行您的 perl 脚本,这不会使用您计算机的全局环境变量。

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多