【问题标题】:(community detection algorithm) Infomap "make" throws error in Python 2.7(社区检测算法)Infomap“make”在 Python 2.7 中抛出错误
【发布时间】:2015-06-03 00:53:54
【问题描述】:

我正在尝试将 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

Windows 7 上的 Python 版本 2.7.7(64 位)。

欢迎提供有关可能出错的任何线索。 此外,我更喜欢单独使用 Infomap 而不是通过 igraph,因为 igraph 不提供给定 Infomap 链接中列出的高级选项。如果我错了,请纠正我。

【问题讨论】:

    标签: python-2.7 python-module


    【解决方案1】:

    比较你的错误:

    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 实用程序有关(请参阅Find command in windows 7)。

    您可能正在使用没有正确安装类 Unix 环境或工具的 Windows。如果是这种情况,请尝试安装(或重新安装)MinGW 或 Cygwin。一种简单的方法是使用自动 GUI 安装程序助手(请参阅MinGW - Getting Started)并从 MinGW 安装管理器安装 MSYS 包。这为您提供了所需的编译器和查找工具。


    更新:

    即使安装了 MSYS 查找实用程序,也必须将其添加到 PATH 环境变量中才能找到。默认情况下,MinGW 不会这样做(请参阅链接)。通过打开命令提示符检查 PATH 中的目录并键入

    path
    

    这可能会给你类似的东西

    PATH=C:\Windows\system32;C:\Windows;…
    

    问题是在 system32 文件夹中还有另一个 find.exe,因此要让 Makefile 选择正确的查找工具,必须在 system32 之前添加包含 MSYS 查找实用程序的目录在 PATH 中。

    假设 MSYS 位于以下位置,您可以通过打开命令提示符并键入来做到这一点

    set path=C:\MinGW\msys\1.0\bin;%PATH%
    

    这将在查找所有其他目录之前设置 MSYS 查找实用程序的目录(从 PATH 环境变量扩展)。

    注意:

    上述解决方案仅更新该会话的路径,因此每次打开新的命令提示符时都必须键入此内容才能编译 Infomap。

    但不建议将其永久添加到系统范围的 PATH 中,因为 MSYS 实用程序会隐藏具有相同名称的默认 Windows 实用程序,如果它们不使用绝对路径,可能会破坏其他程序。

    这就是入门指南写的原因

    我们希望您使用脚本来为每个进程设置 PATH 会话基础。这就是我们不调整PATH的原因。

    您可以通过以下方式简化程序:

    我的电脑 > 属性 > 高级系统设置 > 环境变量

    这里有两个列表,最上面的一个是用户变量,下面一个是系统变量。您可以在此处检查和编辑系统范围的 PATH 变量。但是,创建一个新的 user 变量,其名称和值如下:

    Variable name: USE_MSYS
    Variable value: set path=C:\MinGW\msys\1.0\bin;%PATH%
    

    然后,当您需要在命令提示符下使用 MSYS 实用程序时,只需键入

    %USE_MSYS%
    

    作为上述的快捷方式。

    MSYS 还提供了自己的 shell,其中已经设置了环境变量,但您必须对其进行配置才能找到您的文件(请参阅有关 fstab 的链接)。

    【讨论】:

    • 按预期工作。谢谢!
    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多