簡體   English   中英

從 Pyinstaller 運行外部 Python 腳本

[英]Running external Python script from Pyinstaller

我使用 Pyinstaller 編寫了一個應用程序,它在目標機器和一些包上安裝了 Python。 在應用程序結束時,我應該生成一個 Python 腳本並使用subprocess.Popen() 但是,腳本似乎無法執行它,因為它似乎仍在使用應用程序(pyinstaller 的)運行時環境。 但是,在安裝工作后獨立運行生成的腳本。

有沒有辦法在 pyinstaller 的上下文之外生成進程?

只是分享我為這個問題所做的一些方法(至少對於我的用例)。

第一種方法是在安裝期間生成的結果腳本中,如果PYTHONPATH中的第一個條目為空(即當前目錄),我會明確刪除它。 這確保首先加載當前上下文之外的必要 Python 庫(PyInstaller 引導加載程序)。 IE

if not sys.path[0]:
    sys.path.pop(0)

對於第二種方法,有些情況下LD_LIBRARY_PATH環境變量指的是提取的安裝程序的目錄。 通常發生在 Linux 中,我會將修改后的環境變量集發送到subprocess.Popen() ,其中LD_LIBRARY_PATH已被刪除。

pip_env = os.environ
if 'LD_LIBRARY_PATH' in pip_env:
    pip_env.pop('LD_LIBRARY_PATH')
subprocess.call("<command here>", shell=True, env=pip_env)

但是,請注意使用上述方法。 雖然它適用於我的用例,但它可能會導致其他用例出現意外問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM