如何为控制台安装NodeBox

7 投票
1 回答
1016 浏览
提问于 2025-04-18 10:20

我正在使用OS X Mavericks,想在Python脚本中使用NodeBox模块。

关于如何为控制台安装这些模块的帖子是2009年的,已经不适用了,因为那是1.9.x版本的内容(现在是3.0.40)。而且SVN源代码也不再存在了。现在的源代码可以在GitHub上找到。

我通过克隆项目并运行:

ant run

结果只得到了桌面版本的构建。

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

1 个回答

2

在文档中提到的内容,具体可以在2. 安装NodeBox模块这一部分找到:

如果你想通过命令行使用NodeBox,就需要先安装它。目前我们推荐使用Subversion来获取一份副本:

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

我们应该按照常规方式从源代码安装,但正如你所说,这个过程有点过时了。源代码显然已经从SVN迁移到了GitHub,地址是https://github.com/nodebox/nodebox-pyobjc,而且源代码的包结构也发生了变化。

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

$ 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中的一些库路径是错误的,可能是因为一段时间没人使用这个,库的位置发生了变化,但我们可以修复它:

# 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中的库路径问题,可以在这里查看。

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

撰写回答