невозможно импортировать имя 'box_2d_to_points' из 'util' - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь запустить следующий код в python 3.7, используя spyder

import numpy as np
import freud
from util import box_2d_to_points
import matplotlib.pyplot as plt

data_path = "data/phi065"
box_data = np.load("{}/box_data.npy".format(data_path))
pos_data = np.load("{}/pos_data.npy".format(data_path))

def plot_rdf(box_arr, points_arr, prop, rmax=10, dr=0.1, label=None, ax=None):
    """Helper function for plotting RDFs."""
    if ax is None:
        fig, ax = plt.subplots(1, 1, figsize=(12, 8))
        ax.set_title(prop, fontsize=16)
    rdf = freud.density.RDF(rmax, dr)
    for box, points in zip(box_arr, points_arr):
        rdf.accumulate(box, points)
    if label is not None:
        ax.plot(rdf.R, getattr(rdf, prop), label=label)
        ax.legend()
    else:
        ax.plot(rdf.R, getattr(rdf, prop))
    return ax

Сначала установил пакет с именем "freud" (pip install freud), затем, когда я запускаю, я получаю эту ошибку,

ImportError: невозможно импортировать имя 'box_2d_to_points' из 'util' (/opt/anaconda3/lib/python3.7/site-packages/util/__init__.cpython-37m-darwin.so)

Итак, я проверил, установлен ли пакет, используя

pip show util

Я получил это: ВНИМАНИЕ: Пакеты не найдены: util Примечание:вам может понадобиться перезапустить ядро, чтобы использовать обновленные пакеты.

и да, я перезапустил ядро, ничего не изменилось.

Когда я пытаюсь установить его

pip install util

ОШИБКА: не удалось найти версию, которая удовлетворяет требованию util (из версий: нет) ОШИБКА:Соответствующий дистрибутив для util не найден. Примечание: может потребоваться перезапустить ядро, чтобы использовать обновленные пакеты.

Я искал в Интернете и обнаружил, что его можно установить как pip install python-utils, но затем он создает другой каталоги код не компилируется, даже если я изменяю на from python_utils import box_2d_to_points.

Но я думаю, что это какая-то проблема с каталогом, что пакет не может быть прочитан. Если вы посмотрите на прикрепленный скриншот, в библиотеке с папкой 'freud' есть папка 'util' с файлом " init .cpython-37m-darwin.so". Мне интересно, как это установить? пакет. Я следовал решениям ( Установить пакет Python в другой каталог с помощью pip?) , но проблема так и не была решена.

Документацию для пакета Фрейда можно найти здесь :

и вот снимок экрана каталогов

Спасибозаранее

Ответы [ 3 ]

1 голос
/ 01 ноября 2019

Я сопровождающий пакета freud. Об этой проблеме, связанной с путаницей в файле util, ранее сообщал другой пользователь (https://github.com/glotzerlab/freud/issues/446)), и она была решена в версии 2.0 библиотеки Фрейда, выпущенной вчера (31 октября 2019 года).

Как упоминалось в других комментариях и ответах, файл util.py не включен в пакет freud. Он использовался в примерах документации freud для версии 1.0 и содержал функции, которые в основном использовались для генерации систем частиц и построения результатов. Поскольку это смутило нескольких новых пользователей, мы решили включить многие из этих функций непосредственно в пакет * 1009. * В некоторых случаях мы решили оставить файл util.py с кодом, специфичным для печати, и четко документировать, где файлможно найти (пример: https://freud.readthedocs.io/en/stable/examples/module_intros/order.Hexatic.html). Причиной такого выбора для разделения служебных функций является то, что freud является в основном пакетом анализа, и выбор визуализации обычно остается за пользователем (хотя начиная с версии 2.0,многие вычислительные объекты имеют вспомогательные методы для построениясвязать их результаты с Matplotlib).

В freud v2.0 документация была пересмотрена. Приведенный выше фрагмент кода был обновлен для нового API в v2.0 и больше не используется. опирается на файл util.py. Новый пример находится здесь: https://freud.readthedocs.io/en/stable/examples/module_intros/density.RDF-AccumulateFluid.html

import numpy as np
import freud
import matplotlib.pyplot as plt

data_path = "data/phi065"
box_data = np.load("{}/box_data.npy".format(data_path))
pos_data = np.load("{}/pos_data.npy".format(data_path))

def plot_rdf(box_arr, points_arr, prop, r_max=10, bins=100, label=None, ax=None):
    """Helper function for plotting RDFs."""
    if ax is None:
        fig, ax = plt.subplots(1, 1, figsize=(12, 8))
        ax.set_title(prop, fontsize=16)
    rdf = freud.density.RDF(bins, r_max)
    for box, points in zip(box_arr, points_arr):
        rdf.compute(system=(box, points), reset=False)
    if label is not None:
        ax.plot(rdf.bin_centers, getattr(rdf, prop), label=label)
        ax.legend()
    else:
        ax.plot(rdf.bin_centers, getattr(rdf, prop))
    return ax

Кроме того, я хотел подтвердить, что pip install freud не получит правильный пакет. freud изначально был доступен через каналы conda, но не через индекс пакетов Python (PyPI). Мы обнаружили, что имя freud уже было принято в PyPI, когда мы начали создавать колеса для простой установки с pip. На странице Установка в документации перечислены правильные методы установки, которые в настоящее время conda install -c conda-forge freud при использовании среды conda или pip install freud-analysis.

Спасибо за использование Фрейда, и пожалуйстаВы можете свободно обращаться к списку рассылки пользователей freud или на странице GitHub freud , если у вас есть дополнительные вопросы.

0 голосов
/ 01 ноября 2019

Пройдя через коды и репозиторий в GitHub и отметив, что дали пользователи: phd и merv, я заметил, что есть файл с именем util.py. Я скопировал его в правильный каталог и смог запустить код без ошибок. Если у вас возникла другая проблема, связанная с отсутствием файлов, я думаю, что правильный путь - убедиться, что у вас установлены правильные модули и есть необходимые файлы в вашем каталоге.

0 голосов
/ 31 октября 2019

pip install freud устанавливает неправильный пакет. На странице установки отображается команда pip install freud-analysis. Пакеты freud и freud-analysis - это два совершенно разных и не связанных между собой.

Поэтому сначала удалите freud, а затем установите freud-analysis:

pip uninstall freud
pip install freud-analysis

К сожалению, даже этот правильный freud не имеет box_2d_to_points. Единственное упоминание box_2d_to_points в документах и нигде больше . Я думаю, вы должны спросить авторов что они имеют в виду.

...