(社区检测算法)Infomap "make" throws error in Python 2.7
(community detection algorithm) Infomap "make" throws error in Python 2.7
我正在尝试将 Infomap(社区检测算法)编译为 http://www.mapequation.org/code.html#Input 中给出的 python 模块,但最终出现如下错误 -
\examples\python>make
cd ../.. && make python
Access denied - SRC
File not found - -NAME
Access denied - SRC
File not found - -NAME
Access denied - INTERFACES/SWIG
File not found - -NAME
make[1]: Entering directory `/d/PythonInstallables/Infomap/Third_Trial/mapequation-infomap-55e7e922c554/mapequation-infomap-55e7e922c554'
cp: missing destination file operand after `build/py/'
Try `cp --help' for more information.
make[1]: *** [py-build] Error 1
make[1]: Leaving directory `/d/PythonInstallables/Infomap/Third_Trial/mapequation-infomap-55e7e922c554/mapequation-infomap-55e7e922c554'
make: *** [../../build/py/infomap.py] Error 2
Python Windows 7.
版本 2.7.7(64 位)
欢迎提供有关可能出错的任何线索。
此外,我更喜欢单独使用 Infomap 而不是通过 igraph,因为 igraph 不提供给定 Infomap link 中列出的高级选项。如有错误请指正
比较你的错误:
Access denied - SRC
File not found - -NAME
Access denied - SRC
File not found - -NAME
Access denied - INTERFACES/SWIG
File not found - -NAME
使用 Makefile 中的命令:
HEADERS := $(shell find src -name "*.h")
SOURCES := $(shell find src -name "*.cpp")
SWIG_FILES := $(shell find interfaces/swig -name "*.i”)
这些问题似乎与 Windows 中的查找实用程序有关(参见 Find command in windows 7)。
可能您使用的 Windows 没有正确安装类 Unix 环境或工具。如果是这种情况,请尝试安装(或重新安装)MinGW 或 Cygwin。一种简单的方法是使用自动化 GUI 安装程序助手(参见 MinGW - Getting Started)并从 MinGW 安装管理器安装 MSYS 包。这为您提供了所需的编译器和查找工具。
更新:
即使安装了 MSYS 查找实用程序,也必须将其添加到要查找的 PATH 环境变量中。并且 MinGW 默认情况下不这样做(请参阅 link)。通过打开命令提示符并键入
检查 PATH 中的目录
path
这可能会给你类似的东西
PATH=C:\Windows\system32;C:\Windows;…
问题是 system32 文件夹中还有另一个 find.exe,因此为了让 Makefile 选择正确的查找工具,必须在 之前添加包含 MSYS 查找实用程序的目录 PATH 中的 system32。
假设 MSYS 位于以下位置,您可以通过打开命令提示符并键入
set path=C:\MinGW\msys.0\bin;%PATH%
这将在所有其他要查找的目录之前设置 MSYS 查找实用程序的目录(从 PATH 环境变量扩展)。
注:
上述解决方案仅更新该会话的路径,因此每次打开新的命令提示符时都必须键入此命令才能编译 Infomap。
但不建议将其永久添加到系统范围的 PATH 中,因为 MSYS 实用程序会隐藏具有相同名称的默认 Windows 实用程序,如果其他程序不使用绝对路径,这可能会破坏它们。
这就是入门指南写道
的原因
We prefer that you use a script to set PATH for the processes on a per
session basis. This is the reason that we do not adjust the PATH.
您可以通过这样做来简化程序:
我的电脑 > 属性 > 高级系统设置 > 环境变量
这里有两个列表,上面一个是用户变量,下面一个是系统变量。在这里您可以检查和编辑系统范围的 PATH 变量。但是,创建一个新的 user 变量并使用如下名称和值:
Variable name: USE_MSYS
Variable value: set path=C:\MinGW\msys.0\bin;%PATH%
然后当您需要在命令提示符中使用 MSYS 实用程序时,只需键入
%USE_MSYS%
作为上述的快捷方式。
MSYS 还提供了自己的 shell 环境变量,但您必须配置它来查找您的文件(参见 link 关于 fstab)。
我正在尝试将 Infomap(社区检测算法)编译为 http://www.mapequation.org/code.html#Input 中给出的 python 模块,但最终出现如下错误 -
\examples\python>make
cd ../.. && make python
Access denied - SRC
File not found - -NAME
Access denied - SRC
File not found - -NAME
Access denied - INTERFACES/SWIG
File not found - -NAME
make[1]: Entering directory `/d/PythonInstallables/Infomap/Third_Trial/mapequation-infomap-55e7e922c554/mapequation-infomap-55e7e922c554'
cp: missing destination file operand after `build/py/'
Try `cp --help' for more information.
make[1]: *** [py-build] Error 1
make[1]: Leaving directory `/d/PythonInstallables/Infomap/Third_Trial/mapequation-infomap-55e7e922c554/mapequation-infomap-55e7e922c554'
make: *** [../../build/py/infomap.py] Error 2
Python Windows 7.
版本 2.7.7(64 位)欢迎提供有关可能出错的任何线索。 此外,我更喜欢单独使用 Infomap 而不是通过 igraph,因为 igraph 不提供给定 Infomap link 中列出的高级选项。如有错误请指正
比较你的错误:
Access denied - SRC
File not found - -NAME
Access denied - SRC
File not found - -NAME
Access denied - INTERFACES/SWIG
File not found - -NAME
使用 Makefile 中的命令:
HEADERS := $(shell find src -name "*.h")
SOURCES := $(shell find src -name "*.cpp")
SWIG_FILES := $(shell find interfaces/swig -name "*.i”)
这些问题似乎与 Windows 中的查找实用程序有关(参见 Find command in windows 7)。
可能您使用的 Windows 没有正确安装类 Unix 环境或工具。如果是这种情况,请尝试安装(或重新安装)MinGW 或 Cygwin。一种简单的方法是使用自动化 GUI 安装程序助手(参见 MinGW - Getting Started)并从 MinGW 安装管理器安装 MSYS 包。这为您提供了所需的编译器和查找工具。
更新:
即使安装了 MSYS 查找实用程序,也必须将其添加到要查找的 PATH 环境变量中。并且 MinGW 默认情况下不这样做(请参阅 link)。通过打开命令提示符并键入
检查 PATH 中的目录path
这可能会给你类似的东西
PATH=C:\Windows\system32;C:\Windows;…
问题是 system32 文件夹中还有另一个 find.exe,因此为了让 Makefile 选择正确的查找工具,必须在 之前添加包含 MSYS 查找实用程序的目录 PATH 中的 system32。
假设 MSYS 位于以下位置,您可以通过打开命令提示符并键入
set path=C:\MinGW\msys.0\bin;%PATH%
这将在所有其他要查找的目录之前设置 MSYS 查找实用程序的目录(从 PATH 环境变量扩展)。
注:
上述解决方案仅更新该会话的路径,因此每次打开新的命令提示符时都必须键入此命令才能编译 Infomap。
但不建议将其永久添加到系统范围的 PATH 中,因为 MSYS 实用程序会隐藏具有相同名称的默认 Windows 实用程序,如果其他程序不使用绝对路径,这可能会破坏它们。
这就是入门指南写道
的原因We prefer that you use a script to set PATH for the processes on a per session basis. This is the reason that we do not adjust the PATH.
您可以通过这样做来简化程序:
我的电脑 > 属性 > 高级系统设置 > 环境变量
这里有两个列表,上面一个是用户变量,下面一个是系统变量。在这里您可以检查和编辑系统范围的 PATH 变量。但是,创建一个新的 user 变量并使用如下名称和值:
Variable name: USE_MSYS
Variable value: set path=C:\MinGW\msys.0\bin;%PATH%
然后当您需要在命令提示符中使用 MSYS 实用程序时,只需键入
%USE_MSYS%
作为上述的快捷方式。
MSYS 还提供了自己的 shell 环境变量,但您必须配置它来查找您的文件(参见 link 关于 fstab)。