【问题标题】:Error Installing Firefox Addon SDK Python安装 Firefox Addon SDK Python 时出错
【发布时间】:2014-04-04 20:06:05
【问题描述】:

您好,我正在尝试弄清楚如何正确安装 Firefox Addon SDK,我已遵循所有安装细节,例如:安装 Python 2.7、正确设置我的 PATH 变量以及从我的 cmd.exe 运行插件......每次我运行命令行开始开发插件我收到此错误:

    C:\mozilla-build\addon-sdk\bin>activate.bat
    Warning: Failed to find Python installation directory

据我了解,我已正确配置所有内容,任何人都可以帮助解决此错误。而且我的PATH变量如下

   User Variables...;C:\mozilla-build\addon-sdk\bin;C:\mozilla-build\python;C:\Python27
   SYSTEM Variables ...;C:\mozilla-build\addon-sdk\bin;C:\mozilla-build\python;C:\Python27

【问题讨论】:

    标签: firefox python-2.7 windows-7 firefox-addon firefox-addon-sdk


    【解决方案1】:

    问题似乎是激活批处理文件在设置变量 PYTHONINSTALL 的写入值时遇到问题。 我通过手动设置并删除了 Mozilla 用来检测路径的所有臃肿函数来解决这个问题。

    使用编辑器打开 bin\activate.bat 文件(np++ 明确表示可以使用) 在 :CheckPython 标签下删除函数和 cmets 并使用它来设置你的 python 安装路径:

    :CheckPython
    ::CheckPython(retVal, key)
    ::Reads the registry at %2% and checks if a Python exists there.
    ::Checks both HKLM and HKCU, then checks the executable actually exists.
    
    SET key=%2%
    SET "%~1="
    SET reg=reg
    if defined ProgramFiles(x86) (
    
      if exist %WINDIR%\sysnative\reg.exe SET reg=%WINDIR%\sysnative\reg.exe
    )
    rem here you should make sure to set the correct path
    set PYTHONINSTALL=C:\Program Files\Python27
    if exist %PYTHONINSTALL%\python.exe goto :EOF
    
    if exist %PYTHONINSTALL%\PCBuild\python.exe (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild" & goto :EOF)
    
    if exist %PYTHONINSTALL%\PCBuild\amd64\python.exe (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild\amd64" & goto :EOF)
    
    
    
    GOTO :EOF
    

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题,看来修改python的默认安装目录会导致这个问题。

      1. 确保您已安装python version 2.5, 2.6 or 2.7。 Python 3.x 版将不起作用。
      2. 在默认路径C:/Python32/中安装Python。
      3. 在 addon-sdk 文件夹中打开命令提示符并运行 bin\activate。

      【讨论】:

      • 将 Python 重新安装到默认目录有效,但在我的情况下,默认路径是 'c:/Python27'。
      【解决方案3】:

      现在是 2015 年,我怀疑大多数用户是否可以在第一次尝试时让 Firefox Addon SDK 工作而无需接触 Windows 的一些代码——即使 Python 安装在默认位置...

      这是我使用 Python v2.7 安装它的方法

      activate.bat 的第 111 行左右,您有:

      set PYTHONINSTALL=%PYTHONINSTALL:REG_SZ=%
      

      改成

      set PYTHONINSTALL=%PYTHONINSTALL:REG_SZ="C://Python27"
      

      或者将其设置为安装 Python 的任何位置。而已!

      【讨论】:

      • 确实是 2015 年,真是太悲伤了.... Mozilla!
      • @ysap 我认为 Mozilla 忘记了我们 Windows 用户:) Linux 不需要手术。
      【解决方案4】:

      我在使用 Windows 7 时遇到了同样的问题,这就是我为使其正常工作所做的工作

      1. https://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe 运行 MozillaBuildSetup 工具
      2. 在 C:\mozilla-build\python 中运行 python-2.7.5.msi
      3. 在 addon-sdk 文件夹中打开命令提示符并运行 bin\activate

      我不知道更多,所以希望这能解决它!

      【讨论】:

      • @Krispcheez,我仍然遇到同样的错误,你是如何配置实际指向 python 的 PATH 变量???
      • @RicoPlasakoi,看看如果你修改 activate.bat 并在 CheckPython 中的每一行 "set PYTHONINSTALL=%PYTHONINSTALL: =%" 之后添加 echo %PYTHONINSTALL% 会得到什么
      • @Krispycheez....好吧,所以我实际上可以打开 activate.bat 文件并对其进行修改???...那么您所说的检查 python 是什么意思??????跨度>
      • @RicoPlasakoi 是的,您可以右键单击并选择批处理文件上的编辑以在记事本中打开它。大约一半的地方有一行写着:CheckPython。过去是我提到的两条线。另外,你能告诉我你使用的是什么版本的sdk吗?
      • 好的,我看到三行有这个 SET PYTHONVERSION=2.7 调用:CheckPython PYTHONINSTALL %PYTHONKEY%\%PYTHONVERSION%\InstallPath if "%PYTHONINSTALL%" NEQ "" goto FoundPython A
      【解决方案5】:

      这是隔离 reg 查询返回的路径(可能)的另一种方法,独立于 Windows 版本:

      1. 用唯一的单个字符替换查询结果中唯一保证的单词REG_SZ,例如?。 (见后文)
      2. 然后使用该唯一的单个字符(如果找到)将查询结果拆分为 2 个标记,并仅获取第 2 个(如果有)。
      3. 最后,从此类标记的左侧修剪制表符和空格,以获取路径。

      注意: 问号实际上可能是路径的一部分,尽管这似乎并不常见。理想情况下,它应该是路径中不允许出现的字符:|<>,等等。但是其中一些给我们带来了逃避它们的麻烦。

      检查时原始代码还有另一个问题:

      if exist %PYTHONINSTALL%\whatever goto :EOF
      

      被检查的路径应该用双引号引起来,以考虑到包含空格的路径。

      总而言之,这是替代实现,例如仅适用于 HKML 部分:

      rem Try HKLM
      SET QueryResult=
      FOR /F "usebackq delims=" %%r IN (`%reg% QUERY HKLM\%key% /ve 2^>NUL`) DO @SET QueryResult=%%r
      
      SET ReplacedResult=%QueryResult:REG_SZ=?%
      FOR /F "tokens=2 delims=?" %%t IN ("%ReplacedResult%") DO SET "%~1=%%t"
      
      rem trim tabs and spaces from the left (note: there's a literal tab in next line)
      FOR /F "tokens=* delims=     " %%v IN ("%PYTHONINSTALL%") DO SET PYTHONINSTALL=%%v
      
      if exist "%PYTHONINSTALL%\python.exe" goto :EOF
      rem It may be a 32bit Python directory built from source, in which case the
      rem executable is in the PCBuild directory.
      if exist "%PYTHONINSTALL%\PCBuild\python.exe" (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild" & goto :EOF)
      rem Or maybe a 64bit build directory.
      if exist "%PYTHONINSTALL%\PCBuild\amd64\python.exe" (set "PYTHONINSTALL=%PYTHONINSTALL%\PCBuild\amd64" & goto :EOF)
      

      请查看this Github commit 以了解实际差异。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        相关资源
        最近更新 更多