【问题标题】:How to install NodeBox for console如何为控制台安装 NodeBox
【发布时间】:2014-08-09 19:14:21
【问题描述】:

我正在开发 OS X Mavericks,并希望在 Python 脚本中使用 NodeBox 模块。

关于如何为控制台安装模块的帖子是从 2009 年开始的,并且不再适用,因为这是指版本 1.9.x(当前是 3.0.40)。 SVN 源也不再存在。源代码可在 GitHub 上获得。

通过克隆项目并运行:

ant run

我得到的只是桌面版本的构建。

如何在 Python 脚本中正确安装和运行最新的 NodeBox 模块?

【问题讨论】:

    标签: python python-2.7 python-module nodebox


    【解决方案1】:

    正如文档here2 节中所说的那样。安装 NodeBox 模块

    如果你想从命令行使用 NodeBox,你必须安装它。我们目前建议使用 Subversion 来获取副本:

    svn co http://dev.nodebox.net/svn/nodebox/trunk/ nodebox
    ...
    cd src
    python setup.py install

    我们应该从源头安装通常的方式,但正如你所说的程序已经过时了。正如download page 所述,源代码显然从SVN 转移到了https://github.com/nodebox/nodebox-pyobjc 的GitHub,并且源代码包结构也发生了变化。

    让我们抓取源代码并尝试安装它:

    $ git clone https://github.com/nodebox/nodebox-pyobjc.git
    $ cd nodebox-pyobjc
    $ python nodebox/setup.py install
    
    Traceback (most recent call last):
      File "nodebox/setup.py", line 17, in <module>
        import nodebox
    ImportError: No module named nodebox
    

    所以setup.py需要导入nodebox包,我们把项目根目录添加到Python路径,这样可以找到nodebox包再试:

    $ export PYTHONPATH=$PYTHONPATH:.
    $ python nodebox/setup.py install
    
    ...
    clang: error: no such file or directory: 'nodebox/ext/cGeo.c'
    clang: error: no input files
    error: command 'clang' failed with exit status 1
    

    现在发现 setup.py 中的一些 lib 路径是错误的,当这些 lib 移动时,可能有一段时间没有人使用它,但我们可以修复它:

    # ext_modules = [
    #     Extension('cGeo', ['nodebox/ext/cGeo.c']),
    #     Extension('cPathmatics', ['nodebox/ext/cPathmatics.c']),
    #     Extension('cPolymagic', ['nodebox/ext/gpc.c', 'nodebox/ext/cPolymagic.m'], extra_link_args=['-framework', 'AppKit', '-framework', 'Foundation'])
    #     ]
    
    ext_modules = [
        Extension('cGeo', ['libs/cGeo/cGeo.c']),
        Extension('cPathmatics', ['libs/pathmatics/pathmatics.c']),
        Extension('cPolymagic', ['libs/polymagic/gpc.c', 'libs/polymagic/polymagic.m'], extra_link_args=['-framework', 'AppKit', '-framework', 'Foundation'])
        ]
    

    再次尝试安装:

    $ python nodebox/setup.py install
    ...
    running install_egg_info
    Writing <python>/lib/python2.7/site-packages/NodeBox-1.9.7rc2-py2.7.egg-info
    
    $ pip list
    ...
    NodeBox (1.9.7rc2)
    ...
    

    现在包安装成功,我们应该可以使用它了:

    $ python
    >>> import nodebox
    >>> dir(nodebox)
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'get_version']
    >>> nodebox.__version__
    '1.9.7rc2'
    

    此外,您可能仍需要手动安装一些依赖项才能正常工作,如 setup.py 本身所述:

    # We require some dependencies:
    # - PyObjC
    # - psyco
    # - py2app
    # - cPathMatics (included in the "libs" folder)
    # - polymagic (included in the "libs" folder)
    # - Numeric (included in the "libs" folder)
    # - Numpy (installable using "easy_install numpy")
    

    我已经创建了一个带有固定 setup.py 库路径的拉取请求,请参阅here

    使用 Homebrew Python 2.7.6 在 OS X Mavericks(系统版本:OS X 10.9.3 (13D65),内核版本:Darwin 13.2.0)上测试。

    【讨论】:

    • 好的。我试过这个。由于许可,我不得不切换到root。我还收到“退出状态为 1 的 cc 失败”。这个问题提供了一个解决方案:stackoverflow.com/questions/22697440/…
    • @jurihandl 至于切换到root,取决于你的环境是如何设置的。如果您使用系统 Python、受保护的文件系统位置等,您可能需要 root。那么你得到的实际错误是什么,“cc失败,退出状态1”之前的行?
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    相关资源
    最近更新 更多