Я установил nodebox 2 для окон на моем компьютере и проверил, что все примеры запущены как есть.
Теперь я хочу использовать графическую библиотеку Graph для нее.
Я пошел и скопировал его, как в папке с папками site-, а затем выполнил примеры, которые он дал в нем в IDLE.
Я получил ошибку ximport. Итак, я добавил в код как from nodebox.graphics import *
Теперь я получаю следующую ошибку
Traceback (most recent call last):
File "C:\Python26\Lib\site-packages\graph\graph_example2.py", line 39, in <module>
g.draw(highlight=path, weighted=True, directed=True)
File "C:\Python26\lib\site-packages\graph\__init__.py", line 453, in draw
self.update()
File "C:\Python26\lib\site-packages\graph\__init__.py", line 416, in update
self.x = _ctx.WIDTH - max.x*self.d - min_.x*self.d
AttributeError: 'NoneType' object has no attribute 'WIDTH'
Есть ли способ запустить эту библиотеку из-за пределов узла в Windows?
спасибо...
Я вставляю код, для которого я получаю ошибку ниже...
from nodebox.graphics import *
try:
graph = ximport("graph")
except ImportError:
graph = ximport("__init__")
reload(graph)
size(600, 600)
# A graph object.
g = graph.create(iterations=500, distance=1.0)
# Add nodes with a random id,
# connected to other random nodes.
for i in range(50):
node1 = g.add_node(random(500))
if random() > 0.5:
for i in range(choice((2, 3))):
node2 = choice(g.nodes)
g.add_edge(node1.id, node2.id, weight=random())
# We leave out any orphaned nodes.
g.prune()
# Colorize nodes.
# Nodes with higher importance are blue.
g.styles.apply()
# Update the graph layout until it done.
g.solve()
# Show the shortest path between two random nodes.
path = []
id1 = choice(g.keys())
id2 = choice(g.keys())
path = g.shortest_path(id1, id2)
# Draw the graph and display the shortest path.
g.draw(highlight=path, weighted=True, directed=True)
Dodebox Graph docs упоминает, что он поддерживает Nodebox 1.9.5.6, который является номером версии Nodebox 1 (только для Mac). Насколько мне известно, библиотека Graph еще не была перенесена в Nodebox 2, поэтому она может работать только на Mac.
Один из вариантов - это проект под названием Nodebox OpenGL, который реализует API Nodebox и включает в себя собственную библиотеку графов, пример использования которого находится в examples\08-physics\07-graph
. Библиотека Nodebox 1 Graph еще не совместима, но включает в себя собственный класс графа nodebox.graphics.physics.Graph
.
Чтобы использовать его, вам необходимо загрузить:
Извлеките эти и установите или просто разместите пакеты nodebox
и pyglet
где-нибудь на вашем пути Python (site-packages
). Когда вы запустите 07-graph.py
, вы увидите следующее:
Graph
- это то, что сбило меня с толку - она работает только на Mac. Обновленный ответ с этой информацией и обходным путем.