Python – ошибка ModuleNotFound при использовании Anaconda

Я пытаюсь запустить эту программу:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from io import open

from multiprocessing import Pool
import buildingspy.simulate.Simulator as si


# Function to set common parameters and to run the simulation
def simulateCase(s):
''' Set common parameters and run a simulation.

:param s: A simulator object.

'''
s.setStopTime(86400)
# Kill the process if it does not finish in 1 minute
s.setTimeOut(60)
s.showProgressBar(False)
s.printModelAndTime()
s.simulate()


def main():
''' Main method that configures and runs all simulations
'''
import shutil
# Build list of cases to run
li = []
# First model
model = 'Buildings.Controls.Continuous.Examples.PIDHysteresis'
s = si.Simulator(model, 'dymola', 'case1')
s.addParameters({'con.eOn': 0.1})
li.append(s)
# second model
s = si.Simulator(model, 'dymola', 'case2')
s.addParameters({'con.eOn': 1})
li.append(s)

# Run all cases in parallel
po = Pool()
po.map(simulateCase, li)

# Clean up
shutil.rmtree('case1')
shutil.rmtree('case2')

# Main function
if __name__ == '__main__':
main()

и я продолжаю получать эту ошибку:

File "C:/Users/Toshiba/.spyder-py3/temp.py", line 11, in <module>
    import buildingspy.simulate.Simulator as si

ModuleNotFoundError: No module named 'buildingspy'

Я уже установил пакет с помощью pip более одного раза, и ничего не изменилось.

Что мне не хватает?

Это является источником этого кода.


person Ricardo de Castro    schedule 08.01.2018    source источник
comment
Я думал, что conda, а не pip, был менеджером пакетов для Anaconda.   -  person John Gordon    schedule 08.01.2018
comment
Я действительно потерялся, я впервые пытаюсь запустить что-то на питоне.   -  person Ricardo de Castro    schedule 08.01.2018


Ответы (1)


Эта ошибка может быть связана с тем, что на вашем компьютере установлено несколько версий Python:
https://docs.python.org/3/installing/#work-with-multiple-versions-of-python-installed-in-parallel

Пожалуйста, добавьте следующие строки куда-нибудь в свой скрипт (или в новый скрипт) и запустите его один раз из Spyder и один раз из консоли и сравните вывод:

import sys
print("python: {}".format(sys.version))
# also add the following if running from python 3
from shutil import which
print(which("python"))

Buildingspy должен быть установлен с помощью pip, я бы рекомендовал установить его с помощью команды:

python -m pip install -U https://github.com/lbl-srg/BuildingsPy/archive/master.zip

Anaconda добавляет приглашение Anaconda в меню "Пуск". убедитесь, что путь к python.exe правильный.

После правильной установки BuildingsPy вы столкнетесь с проблемой, что в Windows многопроцессорность не будет работать из Spyder (или из IPython/Jupyter), также прочтите этот выпуск:
https://github.com/lbl-srg/BuildingsPy/issues/179
Вам нужно будет запустить свой скрипт из командной строки.

person matth    schedule 08.01.2018
comment
Я запустил ваш двухстрочный код и получил его с помощью CMD, вызывающего Python: python: 3.6.3 |Anaconda, Inc.| (по умолчанию, 15 октября 2017 г., 03:27:45) [MSC v.1900 64 бит (AMD64)] Затем с помощью anaconda (spyder): python: 3.6.3 | Anaconda, Inc.| (по умолчанию, 15 октября 2017 г., 03:28:48) [MSC v.1900 64 бит (AMD64)] Я так понял, что у меня только одна установка, верно? - person Ricardo de Castro; 09.01.2018
comment
затем я зашел в командную строку и попытался запустить скрипт (после установки пакета, как вы сказали), и я получил несколько строк с - person Ricardo de Castro; 09.01.2018
comment
Трассировка (последний последний вызов): Файл C:\Users\Toshiba\Anaconda3\lib\multiprocessing\process.py, строка 258, в _bootstrap self.run() Файл C:\Users\Toshiba\Anaconda3\lib\multiprocessing\ process.py, строка 93, в run self._target(*self._args, **self._kwargs) Файл C:\Users\Toshiba\Anaconda3\lib\multiprocessing\pool.py, строка 108, в рабочей задаче = get () Файл - person Ricardo de Castro; 09.01.2018
comment
C:\Users\Toshiba\Anaconda3\lib\multiprocessing\queues.py, строка 337, в get return _ForkingPickler.loads(res) AttributeError: не удается получить атрибут 'simulateCase' в ‹модуле 'main' (встроенный)> Process SpawnPoolWorker-3: Traceback (последний последний вызов): Файл C:\Users\Toshiba\Anaconda3\lib\multiprocessing\process.py, строка 258, в файле _bootstrap self.run() - person Ricardo de Castro; 09.01.2018
comment
C:\Users\Toshiba\Anaconda3\lib\multiprocessing\process.py, строка 93, in run self._target(*self._args, self._kwargs) Файл C:\Users\Toshiba\Anaconda3\lib\ multiprocessing\pool.py, строка 108, в worker task = get() File C:\Users\Toshiba\Anaconda3\lib\multiprocessing\queues.py, строка 337, в get return ForkingPickler.loads(res) AttributeError : Не удается получить атрибут 'simulateCase' в ‹модуле '_main__' (встроенный)›**жирный шрифт Я все еще пропустил шаг? - person Ricardo de Castro; 09.01.2018
comment
Я немного отредактировал скрипт, теперь он также использует Shutil which. Но я также считаю, что у вас есть только одна установка, а проблема в другом. - person matth; 09.01.2018
comment
Сообщение об ошибке теперь кажется другим тоном, верно? Итак, Buildingspy теперь найден, а вместо этого вы сталкиваетесь с проблемами многопроцессорности? Работают ли другие примеры так, как ожидалось? - person matth; 09.01.2018
comment
питон: 3.6.3 | Анаконда, Inc. | (по умолчанию, 15 октября 2017 г., 03:27:45) [MSC v.1900 64 бит (AMD64)] снова C:\Users\Toshiba\Anaconda3\python.EXE, в обоих случаях - person Ricardo de Castro; 09.01.2018
comment
Да, теперь пакет найден, и я получаю эти ошибки, которые я скопировал и вставил. Эти ошибки возникают, когда я запускаю код из командной строки, когда пытаюсь запустить с помощью spyder. Он продолжает работать вечно. Я проверил свой диспетчер задач, чтобы увидеть загрузку ЦП, и он составил 99%, и большая часть была связана с проверкой поведения avast ... связано ли это с проблемой, которую вы упомянули на GitHub? - person Ricardo de Castro; 09.01.2018
comment
теперь, запустив второй пример с анакондой, я получаю это - person Ricardo de Castro; 09.01.2018
comment
Файл C:\Users\Toshiba\Anaconda3\lib\multiprocessing\pool.py, строка 644, в get поднять self._value AttributeError: объект «NoneType» не имеет атрибута «запись» - person Ricardo de Castro; 09.01.2018
comment
Это похоже на связанную проблему. Вы пробовали упомянутые там шаги, т.е. работает ли это, когда вы запускаете скрипт из терминала, а не из Spyder? Работает ли это на Linux? github.com/lbl-srg/BuildingsPy/issues/179 - person matth; 10.01.2018
comment
*** Ошибка: завершение моделирования в C:\Users\Toshiba\AppData\Local\Temp\tmp-simulator-Toshiba-jc8_w4r0\Buildings. *** Ошибка: Моделирование уничтожения в C:\Users\Toshiba\AppData\Local\Temp\tmp-simulator-Toshiba-jc8_w4r0\Buildings. *** Ошибка: убитый процесс, так как он вычислялся дольше 240 секунд. *** Ошибка: сбой моделирования в «C:\Users\Toshiba\AppData\Local\Temp\tmp-simulator-Toshiba-jc8_w4r0\Buildings». Исключение: файл C:\Users\Toshiba\AppData\Local\Temp\tmp- симулятор-Toshiba-jc8_w4r0\Buildings\simulator.log не существует. Вам нужно удалить каталог вручную. - person Ricardo de Castro; 10.01.2018
comment
Это действительно сообщение об ошибке от Buildingspy, но оно не очень ясное. Я предполагаю, что симуляция по какой-то причине не завершается, и поэтому процесс уничтожается. Чтобы выяснить причину, вы можете включить графический интерфейс Dymola. Одна из возможных причин заключается в том, что модель, которую вы пытаетесь смоделировать, не найдена. Все ли пути правильные, включая путь к библиотеке Buildings (скрипт пытается смоделировать модель из этой библиотеки)? - person matth; 10.01.2018