#python #pycharm
#python #pycharm
Вопрос:
Я пытаюсь скомпилировать код из следующего руководства: https://fluidenginedevelopment.org/documentation/python.html
Вот код учебника:
from pyjet import *
import sys
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
ANIM_NUM_FRAMES = 360
ANIM_FPS = 60
def main():
# Create smoke solver
resX = 100
solver = GridSmokeSolver2(resolution=(resX, 2 * resX), domainSizeX=1.0)
# Customize pressure solver for real-time sim (less accurate, but much faster)
pressureSolver = GridFractionalSinglePhasePressureSolver2()
pressureSolver.linearSystemSolver = FdmGaussSeidelSolver2(20, 20, 0.001)
solver.pressureSolver = pressureSolver
# Setup emitter
sphere = Sphere2(center=(0.5, 0.5), radius=0.15)
emitter = VolumeGridEmitter2(sourceRegion=sphere)
solver.emitter = emitter
emitter.addStepFunctionTarget(solver.smokeDensity, 0.0, 1.0)
emitter.addStepFunctionTarget(solver.temperature, 0.0, 1.0)
# Visualization
fig = plt.figure()
den = np.array(solver.smokeDensity.dataAccessor(), copy=False)
im = plt.imshow(den, vmin=0, vmax=1, cmap=plt.cm.gray,
interpolation='bicubic', animated=True, origin='lower')
# Animation
frame = Frame(0, 1.0 / ANIM_FPS)
def updatefig(*args):
solver.update(frame)
frame.advance()
den = np.array(solver.smokeDensity.dataAccessor(), copy=False)
im.set_data(den)
return im,
if len(sys.argv) > 1:
format = sys.argv[1]
if format == 'gif':
anim = animation.FuncAnimation(fig, updatefig,
frames=ANIM_NUM_FRAMES,
interval=ANIM_FPS, blit=True)
anim.save('smoke_example01.gif', fps=ANIM_FPS, dpi=72,
writer='imagemagick')
elif format == 'mp4':
anim = animation.FuncAnimation(fig, updatefig,
frames=ANIM_NUM_FRAMES,
interval=ANIM_FPS, blit=True)
anim.save('smoke_example01.mp4', fps=ANIM_FPS, writer='ffmpeg')
else:
anim = animation.FuncAnimation(fig, updatefig, frames=ANIM_NUM_FRAMES,
interval=1, blit=True)
plt.show()
if __name__ == '__main__':
Logging.mute()
main()
прежде чем я изменю его, чтобы он соответствовал логотипу, который я создаю. Я установил все необходимые библиотеки (в pycharm), и при попытке ее компиляции я получаю следующую ошибку:
/home/kali/PycharmProjects/AndromedaLogo/venv/bin/python /home/kali/PycharmProjects/AndromedaLogo/main.py Трассировка (последний последний вызов): Файл «/home/kali/PycharmProjects/AndromedaLogo/main.py «, строка 1, из импорта pyjet * Ошибка типа: элемент в pyjet. все должно быть str, а не dtype
В чем, по-видимому, проблема?
Комментарии:
1. Можете ли вы добавить фактический код, который вы написали? Возможно, в нем есть ошибка, которую мы не найдем в руководстве.
2. мой код является копией-вставкой окончательного кода учебника
Ответ №1:
Я думаю, что есть проблема с библиотекой, которую вы используете в данный момент. Проблема возникает во время импорта, то есть до запуска любого вашего кода. Похоже, проблема связана с некоторой проблемой инициализации.
В частности, ссылка pyjet.all
на то, что элементы должны быть строками, а dtype
не заставляет меня предполагать, что по какой-то причине передается массив numpy, где он должен был быть обычным списком строк.
TypeError: Item in pyjet.all must be str, not dtype
Я бы посоветовал удалить установленное вами программное обеспечение и убедиться, что вы установили правильную версию (ту, для которой написано руководство).