PyInstaller & Pymeasure: NotImplementedError - PullRequest
0 голосов
/ 25 марта 2020

В настоящее время я испытываю трудности с использованием PyInstaller для кода, использующего библиотеку Pymeasure. Программа работает нормально из приглашения, но не при запуске из исполняемого файла, созданного PyInstaller.
Вот простой пример кода, работающего из приглашения, но не в замороженном виде:

import visa
from pymeasure.instruments.keithley import Keithley2000, Keithley2400

rm = visa.ResourceManager()
list_available = rm.list_resources()
print(list_available)

keithley = Keithley2400("GPIB1::23")

keithley.apply_current()                # Sets up to source current
keithley.source_current_range = 10e-3   # Sets the source current range to 10 mA
keithley.compliance_voltage = 10        # Sets the compliance voltage to 10 V
keithley.source_current = 0             # Sets the source current to 0 mA
keithley.enable_source()                # Enables the source output

keithley.measure_voltage()              # Sets up to measure voltage

keithley.ramp_to_current(5e-3)          # Ramps the current to 5 mA
print(keithley.voltage)                 # Prints the voltage in Volts

keithley.shutdown()                     # Ramps the current to 0 mA and disables output

Вот вывод при запуске исполняемого файла: enter image description here

Обратите внимание, что у меня установлен PyVISA 1.9.1.

Почему я получаю эту ошибку и как ее исправить?

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Необходимо убедиться, что вы включили метаданные пакета для PyVisa в ваш проект PyInstaller. В PyInstaller есть служебная ловушка для этой работы ; создайте файл подключения hook-pyvista.py (если у вас его еще нет) с помощью:

from PyInstaller.utils.hooks import copy_metadata

datas = copy_metadata("pyvisa")

и сообщите об этом PyInstaller с помощью ключа командной строки --additional-hooks-dir. См. документацию о том, как работают хуки для более подробной информации.

pymeasurement использует атрибут pyvisa.__version__ , чтобы определить, установлена ​​ли у вас правильная версия этого проекта. Но pyvisa.__version__ по умолчанию "unknown", если только он не может найти свои файлы метаданных , что обеспечит pkg_resources необходимыми метаданными для получения версии для него.

Вы можете проверить, что PyVisa был установлен правильно, импортировав его самостоятельно и протестировав атрибут __version__:

import pyvisa
print("PyVisa version", pyvisa.__version__)
0 голосов
/ 27 марта 2020

Вы уверены, что подключены к инструменту, ваш код ссылается на «GPIB1 :: 23», но ваш отпечаток (list_available) возвращает «GPIB1 :: 24»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...