У меня есть программа, которую я запускаю с сервера Jenkins.
Я создал исполняемый файл с помощью pyinstaller и установил его на два компьютера. а потом Дженкинс называет их обоих.
Сначала я использовал os.path.expanduser ('~') , чтобы получить путь пользователя, но он вернул
"C:\Windows\System32\config\systemprofile"
После того, как я попытался просто получить имя пользователя, используя os.environ ['USERPROFILE']
еще получил:
"C:\Windows\System32\config\systemprofile"
Наконец, я нашел другое решение, не требующее модуля os, и попытался:
import ctypes.wintypes
CSIDL_PERSONAL = 5 # My Documents
SHGFP_TYPE_CURRENT = 0 # Get current, not default value
buf= ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH)
ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None,
SHGFP_TYPE_CURRENT, buf)
print(buf.value)
Это не вернуло значение в моем журнале.
Если я запускаю exe локально, все значения возвращаются обратно нормально.
Пакетная команда, которую я запускаю:
start /wait C:\JenkinsResources\MarinaMain.exe
Так что я рисую пробел, как я могу заставить эту программу найти папку пользователя на компьютере, на котором она включена, когда я вызываю ее удаленно.