簡體   English   中英

從選定位置導入Python模塊

[英]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.py2.py創建可執行文件, 1.py可執行文件將從該“ dll”中導入所有需要的軟件包。 因此,您可以在啟動可執行文件之前(例如,在批處理文件中或直接在您的shell配置中)將lib文件放入特定位置並相應地設置PYTHONPATH

我對此進行了進一步調查,並相信這里介紹的解決方案將是我所追求的答案

目前無法使用onefile,因為此功能已損壞。

為了解決我的第一個問題,UPX和虛擬目錄。 最后,將所有文件放在一個目錄中。 最后,像在圖片中一樣將exe放入文件夾中將意味着我的文件減少了。

我可以通過python腳本創建快捷方式(如果仍然需要考慮的話),但是沒有真正的需要,運行一個文件夾中的所有exe文件對我來說已經足夠了。 他們可能會在將來修復onefile,但我對這種解決方案感到非常滿意。

結果:文件較小。

我可以在該PC上的任何位置運行這些exe嗎? 可悲的是,並非沒有多包裝捆扎的包裝被打破。 您可以創建一個快捷方式,盡管它沒有我想的那么糟糕。 盡管他們可能會在將來解決此問題,但與此同時,此解決方案將達到最佳效果。 如果我錯了,請隨時糾正我,但是我對這種解決方案感到滿意。

暫無
暫無

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

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