платформы: Windows 7
Python: 2.7.3добавить новый путь к PTYHONPATH и использовать его для программы, которая делает это с помощью NSIS
StrCpy $NETWORK_PATH "\\someserver\network\path\here"
DetailPrint "$\n"
DetailPrint "Setting up paths required"
Push "SETX PYTHONPATH $NETWORK_PATH;$NETWORK_PATH\lib"
Call Execute
Push '"C:\Python27\python.exe" setup.py deploy'
Call Execute
Function Execute
Exch $0
# execution of the command and return success or failure
FunctionEnd
Это выше скомпилирован как NSIS инсталлятор и работать на нескольких машинах.
Проблема "C:\Python27\python.exe" setup.py deploy
зависит от того, что $ NETWORK_PATH для успешного выполнения.
В первый раз, когда мы запускаем его, $ NETWORK_PATH добавляется к переменной окружения PYTHONPATH, но "C:\Python27\python.exe" setup.py deploy
не работает, поскольку новый PYTHONPATH будет эффективен только в новой командной строке или в следующем запуске.
Есть ли способ сделать добавленный PYTHONPATH эффективным в том же самом запуске?
В настоящее время мы запускаем его дважды - один раз для установки PYTHONPATH и принятия отказа, второй раз он успешно работает.
Другой альтернативный подход, который мы пробовали, - мы сделали 2 исполняемых файла, один для установки PYTHONPATH, а другой для запуска Python Script. Затем мы запускаем оба из них в пакетном скрипте.
Но мое предпочтение заключается в достижении всего этого в одном файле и в одном запуске.
вы пробовали импорт SYS, и изменить sys.path? –
@KennyOstrom у нас первоначально было то, что в скрипте python, использующем sys.path, этот способ решения проблем с серверами имел проблемы с DNS. Поэтому мы создали установщиков, где мы можем быстро изменить сетевой путь к IP-адресам и подготовить установщик. Редактировать скрипт python на всех машинах стал накладной задачей. :( –
Я не понимаю разницы. Единственное изменение в системе - это установка NETWORK_PATH в env на разных системах, и вы уже это делаете. –