Jump to content

    

указать программе где брать библиотеки

 программа на C++ Qt активно использует высокоуровневую интеграцию с питоном. По сути программа отправляет в интерпретатор строки и читает результаты из файла. При переносе на другой компьютер exe-файл на запускается по причине отсутствия в переменной PATH пути именно к моему питону с библиотеками.

 Можно как-то "научить" мой exe-шник брать библиотеки где нужно без правки PATH? 

Share this post


Link to post
Share on other sites

Положить их рядом с exe?

Или прописать путь к ним в переменную PATH.

Share this post


Link to post
Share on other sites

А что, в Венде библиотеки ищутся по %PATH%?

Share this post


Link to post
Share on other sites
7 минут назад, andrew_b сказал:

А что, в Венде библиотеки ищутся по %PATH%?

По умолчанию да. Вначале рядом с EXE потом path. Думаю прога может это изменить но вряд ли обычно это делают.

Share this post


Link to post
Share on other sites
On 8/23/2019 at 1:25 AM, Dubov said:

 программа на C++ Qt активно использует высокоуровневую интеграцию с питоном. По сути программа отправляет в интерпретатор строки и читает результаты из файла. При переносе на другой компьютер exe-файл на запускается по причине отсутствия в переменной PATH пути именно к моему питону с библиотеками.

 Можно как-то "научить" мой exe-шник брать библиотеки где нужно без правки PATH? 

Запускайте свой exe  в своей среде, через start. Все переменные окружения, если надо, можете прописать свои, адаптированные для данного PC.

Вообще эта увязка должна предусматриваться самой программой, или хотябы через локальный конфигурацонный файл, ini, или (наверное) реестр.

Share this post


Link to post
Share on other sites

Если exe ваш - можно динамически загрузить любую dll по любому удобному пути руками, через winapi. LoadLibrary etc.

Share this post


Link to post
Share on other sites

дело в том, что моя программа на C++ использует python. Для корректной работы необходимо чтобы PATH содержал пути к python. Я бы хотел положить python рядом с exe (на каталог выше) и сказать моему exe искать python там. 

Share this post


Link to post
Share on other sites
28 minutes ago, Dubov said:

дело в том, что моя программа на C++ использует python. Для корректной работы необходимо чтобы PATH содержал пути к python. Я бы хотел положить python рядом с exe (на каталог выше) и сказать моему exe искать python там. 

Это уже другой вопрос. Вам, наверное, нужна PythonXX.dll? Можно поместить ее в один каталог с исполняемым файлом, но обычно хорошим тоном является установка Питона на рабочу станцию, после чего Dll будет находиться.

Share this post


Link to post
Share on other sites
43 minutes ago, alexunder said:

обычно хорошим тоном является установка Питона на рабочу станцию

на рабочей станции уже может быть установлена версия питона, отличающейся от моей. мне нужно решение на подобии virtual env. как его реализовать для моего exe?

Share this post


Link to post
Share on other sites
12 hours ago, Dubov said:

на рабочей станции уже может быть установлена версия питона, отличающейся от моей. мне нужно решение на подобии virtual env. как его реализовать для моего exe?

Виртуальное окружение - это же чисто питоновская штука, когда интерпретатор можно запустить в другими переменными. А вот простой "экзешник", тут, увы, подсказать не могу. А почему бы Вам просто не поместить нужную Dll в папку с exe? Если Вам нужен целиком весь питон нужной версии, тогда лучше под него создавать свою переменную типа MYPYTHONPATH, с помощью которой ваша программа может находит нужную вам версию питона с всей обвесухой. Это можно сделать полуавтоматический, когда пользователь при первом запуске задаёт путь.

Share this post


Link to post
Share on other sites

интересно, моя программа написана на C++ Qt. Python лежит в отдельной папке, Python не установлен (в переменной PATH его нет). В Qt я указываю расположение библиотеки питона в нужной папке и include там же. При попытке запустить программу из Qt Creator - программа не запускается(в консоли сообщение: приложение неожиданно завершилось).

Устанавливаю питон как нужно. Приложение запускается из Qt Creator. Компилирую, получаю exe, удаляю питон(чищу PATH), питон остается только в отдельной папке как было изначально. Приложение работает как нужно (запускаю уже без Qt Creator) 

Share this post


Link to post
Share on other sites
5 hours ago, Dubov said:

интересно, моя программа написана на C++ Qt. Python лежит в отдельной папке, Python не установлен (в переменной PATH его нет). В Qt я указываю расположение библиотеки питона в нужной папке и include там же. При попытке запустить программу из Qt Creator - программа не запускается(в консоли сообщение: приложение неожиданно завершилось).

Устанавливаю питон как нужно. Приложение запускается из Qt Creator. Компилирую, получаю exe, удаляю питон(чищу PATH), питон остается только в отдельной папке как было изначально. Приложение работает как нужно (запускаю уже без Qt Creator) 

Скорее всего, потому что инсталлятор питона кладет pythonXX.dll в поддиректорию Windows\System, откуда она находится по PATH

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this