我正试图通过cygwin在windows机器上安装python,以便使用只能在linux环境中使用python实现的统计程序。
我运行了setup-x86_64.exe
并安装了所有与python相关的cygwin包,试图安装python,但当我打开一个终端并键入python
时,我只得到
$ python
-bash: python: command not found
这对我尝试的所有python命令都是一样的,所以安装没有发生。然而,我找到了一个指向Python-2.7.9
的路径,其中似乎包含从源代码构建python所需的文件。
当我运行./configure
时,它是成功的,但当我输入make
时,它失败了,原因是:
File "build/temp.cygwin-1.7.35-x86_64-2.7/libffi/fficonfig.py", line 33, in <module>
ffi_sources += ffi_platforms['X86_WIN64']
KeyError: 'X86_WIN64'
Makefile:488: recipe for target 'sharedmods' failed
make: *** [sharedmods] Error 1
有人知道make
为什么不起作用吗?
./configure --help
中的选项我不熟悉,这些选项中的任何一个都能成功安装吗?
任何想法都将不胜感激,谢谢。
Cygwin附带了一个名为setup.exe
或setup-x86_64.exe
的安装程序。只需运行它并在搜索框中键入python
即可。然后让它为你安装。
python language interpreter
是您需要的基本软件包。
所以,这个问题已经存在3年了,但这个错误仍然发生在最新版本的Python 2(使用2.7.13
和2.7.15
测试)中
我能够通过修改构建目录中的以下文件来构建python。
--- build/temp.cygwin-2.11.1-x86_64-2.7/libffi/fficonfig.py~ 2018-11-03 14:51:53.290000000 -0400
+++ build/temp.cygwin-2.11.1-x86_64-2.7/libffi/fficonfig.py 2018-11-03 14:53:41.793000000 -0400
@@ -9,6 +9,7 @@
'X86': ['src/x86/ffi.c', 'src/x86/sysv.S', 'src/x86/win32.S'],
'X86_FREEBSD': ['src/x86/ffi.c', 'src/x86/freebsd.S'],
'X86_WIN32': ['src/x86/ffi.c', 'src/x86/win32.S'],
+ 'X86_WIN64': ['src/x86/ffi.c', 'src/x86/win64.S'],
'SPARC': ['src/sparc/ffi.c', 'src/sparc/v8.S', 'src/sparc/v9.S'],
'ALPHA': ['src/alpha/ffi.c', 'src/alpha/osf.S'],
'IA64': ['src/ia64/ffi.c', 'src/ia64/unix.S'],
源文件,特别是src/x86/win64.S
,存在于源树中。出于某种原因,./configure
似乎没有正确地将该选项添加到fficonfig.py
文件中的字典中,这导致了问题中发布的KeyError。在进行了这个修改之后,make
和make install
成功地完成了,除了正常的Cygwin包之外,我还可以安装另一个版本的python。
我还不确定为什么会发生这种情况,但我想我会尝试为实际提出的问题提供一个解决方案,而不仅仅是告诉询问者使用包管理器安装预编译版本。
由于从源代码构建Python被认为是个坏主意,我认为我的Cygwin坏了。我试图按照Cygwin网站上的说明卸载Cygwin,但由于权限问题(我使用的是大学提供的Windows机器),我无法将其删除。我最后的办法是运行Cygwin安装向导setup-x86_64.exe
并卸载所有软件包,然后再次运行该向导并再次选择必要的软件包,就像从新软件包开始一样。神奇的是,从头开始安装所需的软件包解决了这个问题,现在我正在Cygwin终端上运行Python,没有任何错误。
如果您想在Cygwin上运行Python,您可能需要从源代码构建它。
- 下载源
- 将其解压缩到以后可以删除的目录,例如:
build
- 运行Cygwin,类型:
cd /path/to/build
- 运行
./configure --help
并阅读有关所需选项的帮助 ./configure #options
make