[英]Importing Python modules from a select location
假設我有三個腳本。 Main.py(具有所有導入),1.py(隨機腳本),2.py(隨機腳本)。
pyinstaller -F --onedir Main.py (80mb)
pyinstaller -F --onedir 1.py (80mb)
pyinstaller -F --onedir 2.py (80mb)
這將創建3個文件夾,然后將1.exe和2.exe復制到具有所有依賴項的Main文件夾中,並且運行良好。
存在兩個問題:
問題是大小。 一個文件將其減小到30mb,一個文件夾將其保持在80mb
更重要的是,exe無法離開該文件夾。 我不得不求助於在Python中使用快捷方式。
我正在遵循此方法 ,這應該是一種解決方法。
我的問題是,如何使用pyinstaller從選定位置讀取導入,以便可以移動可執行文件?
邏輯:使用pyinstaller -F –onefile Main.py (15mb).
編譯Main.py。
在C:\\13\\
創建文件夾,使exe看起來像C:\\13\\Main.exe
在C:\\13
鏈接所有exe? 使用--runtime-tmpdir PATH
我正在努力尋找有關從exe甚至"one dir"
文件夾中獲取導入的文檔。 從開始獲取導入有很多,但是從選定位置獲取導入沒有太多,因此我可以在任何地方運行exe。 而且,很難在pyinstaller中找到模塊,除非對其進行反編譯,從而增加了這種混亂。
也許...
pyinstaller -F --runtime-tmpdir C:\13 --onefile 2.py
pyinstaller -F --runtime-tmpdir C:\13 --onedir 3.py
雖然對我來說沒有創建目錄。 我要如何從選定的位置獲取進口。
另一個可能的解決方案 :
if getattr(sys, 'frozen', False):
os.path.join(sys._MEIPASS, "C:\aa")
雖然您可以在圖片中看到,但可以說我們希望熊貓有一些文件可供選擇...
當他們切換到3.0版時,我與PyInstaller遇到了同樣的問題,而Nuitka為我解決了這個問題。
您可以將Main.py
捆綁到.pyd
lib文件中,然后為1.py
和2.py
創建可執行文件, 1.py
可執行文件將從該“ dll”中導入所有需要的軟件包。 因此,您可以在啟動可執行文件之前(例如,在批處理文件中或直接在您的shell配置中)將lib文件放入特定位置並相應地設置PYTHONPATH
。
我對此進行了進一步調查,並相信這里介紹的解決方案將是我所追求的答案
目前無法使用onefile,因為此功能已損壞。
為了解決我的第一個問題,UPX和虛擬目錄。 最后,將所有文件放在一個目錄中。 最后,像在圖片中一樣將exe放入文件夾中將意味着我的文件減少了。
我可以通過python腳本創建快捷方式(如果仍然需要考慮的話),但是沒有真正的需要,運行一個文件夾中的所有exe文件對我來說已經足夠了。 他們可能會在將來修復onefile,但我對這種解決方案感到非常滿意。
結果:文件較小。
我可以在該PC上的任何位置運行這些exe嗎? 可悲的是,並非沒有多包裝捆扎的包裝被打破。 您可以創建一個快捷方式,盡管它沒有我想的那么糟糕。 盡管他們可能會在將來解決此問題,但與此同時,此解決方案將達到最佳效果。 如果我錯了,請隨時糾正我,但是我對這種解決方案感到滿意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.