Я следую учебнику, чтобы вызвать код python из программы на C++ с the python docs.Как вызвать файл python, которому необходимо импортировать пакеты?
Все работает отлично, когда вы пытаетесь вызвать пример multiply
. Теперь, если я добавить строку исходного кода Python импортирующей библиотеку, позволяет сказать openpyxl
,
from openpyxl import load_workbook
Я получаю сообщение об ошибке из питона
ImportError: No module named openpyxl
Я подумал, что если я импортировать библиотеку системы, У меня не было бы проблем, но я также получаю сообщение об ошибке, если попытаюсь импортировать datetime
.
У меня нет ошибки, если я импортирую файл с консоли python. В моей системе установлена библиотека openpyxl
.
Так что мой вопрос: как импортировать исходный код python, который должен импортировать пакеты?
EDIT: Хорошо, я забыл что-то упомянуть, я не был абсолютно честен с вами, ребята, извините.
Попытка запустить пример Я столкнулся с проблемой: я не мог заставить python найти файл multiply.py
, и строка PyImport_Import
всегда возвращает null
.
Моим решением было добавить путь, в котором я знал, что мой источник python был с помощью PySys_SetPath
. Проблема в том, что я просто понял, что эта функция не добавляет новый каталог, она просто перезаписывает PYTHONPATH
. Итак, теперь python может найти multiply.py
, но абсолютно ничего.
Конечно, я удалил эту строку, но теперь у меня есть другой вопрос: почему python не может найти мой источник, если файл находится только в том же каталоге компилируемой программы на C++?
я понял, что мой sys.path
из моей питона консоли был немного отличается от пути показал в своем встроенном питона: первый был в начале списка пустой строки ''
. Я не эксперт по python, но когда я добавляю эту строку в свой путь, я могу импортировать multiply.py
, поэтому, похоже, именно по этой причине я не мог импортировать модули, которые были расположены по отношению к моему исполняемому файлу, отсутствовал в этом пустом пути но все еще не знают, что это значит.
Должен поблагодарить @ paul-evans, который дал мне идею добавления пути для поиска моих файлов.
У вас есть несколько версий python, установленных в вашей системе? – SethMMorton
У меня есть python 2.7, python 3 и python 3.3. Я уверен, что я использую версию 2.7, вызывая 'PyRun_SimpleString (" import sys \ nprint (sys.version) ");' – camolin3
Переменная 'PYTHONPATH' считывается только в' site.py', поэтому if по какой-то причине ваш интерпретатор не читает этот файл, ваш 'PYTHONPATH' будет проигнорирован. – SethMMorton