繁体   English   中英

如何在 Pyinstaller 中设置环境变量?

[英]How do I set environment variables in Pyinstaller?

我有以下 ps 代码来使用 myfile.spec 生成可执行文件:

python -O -m PyInstaller -v
[System.Environment]::SetEnvironmentVariable('USER', $arr[0])
[System.Environment]::SetEnvironmentVariable('PASSWD', $arr[1])
python -O -m PyInstaller myfile.spec --distpath ../dist --onefile -n myfile

myfile.spec 的内容:

added_files = [
    ('config.yaml', '.')
]

a = Analysis(['myfile.py'],
             pathex=['myfile'],
             datas=added_files,
             hiddenimports = [
               'pandas._libs.tslibs.np_datetime',
             ],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='myfile',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

我在 myfile.py 中做了一个print(os.environ)并且 USER 和 PASSWD 的环境变量不存在。 在 python 文件使用的环境中设置这些变量的最佳方法是什么?

在您的 PC 中手动设置用户变量。


Go 通过在开始栏中搜索或转到settings-->system--about-->advanced system settings-->environment variables到环境变量,然后在用户变量中添加一个具有所需值的新变量。


现在在您的代码中,您可以通过输入os.environ.get('VariableName')来获取变量值

我通过使用运行时挂钩实现了这一点。 只需添加一个带有 .py 文件路径的--runtime-hook选项。

文件说

--runtime-hook:自定义运行时挂钩文件的路径。 运行时挂钩是与可执行文件捆绑在一起的代码,在任何其他代码或模块之前执行以设置运行时环境的特殊功能。 此选项可以多次使用。

https://pyinstaller.org/en/stable/usage.html?highlight=runtime#cmdoption-runtime-hook

你可以使用这样的钩子文件

import os

os.environ["USER"] = <SOMETHING FROM A FILE>
os.environ["PASSWD"] = <SOMETHING FROM A FILE>

请记住,将密码保存在文件中是一种安全漏洞。 理想情况下,您的应用程序应该要求输入密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM