您好我试图弄清楚如何正确安装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
答案 0 :(得分:8)
问题似乎是激活批处理文件有问题来设置变量PYTHONINSTALL的写入值。 我通过手动设置并删除用于检测路径的所有膨胀函数Mozilla来解决这个问题。
使用编辑器打开bin \ activate.bat文件(np ++清楚地使用) 在:CheckPython标签下删除函数和注释,并使用它来设置你的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
答案 1 :(得分:4)
我也有同样的问题,似乎更改python的默认安装目录会导致此问题。
python version 2.5, 2.6 or 2.7
。
版本3.x的Python无效。C:/Python32/
安装Python。答案 2 :(得分:2)
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安装的任何位置。而已!
答案 3 :(得分:1)
我在使用Windows 7时遇到了同样的问题,这就是我为使其工作所做的事情
我还不知道这个,所以希望这可以解决它!
答案 4 :(得分:0)
这是另一种隔离reg查询返回的路径(可能)的方法,与Windows版本无关:
REG_SZ
中唯一的保证字替换为唯一的单个字符,例如?
。 (见后面的说明)注意:
问号实际上可能是路径的一部分,尽管这似乎并不常见。理想情况下,它应该是路径中不允许的字符:|
,<
,>
,依此类推。但其中一些让我们摆脱了麻烦。
在检查时,原始代码还存在另一个问题:
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以查看实际差异。