我有一個Python程序,它將動態添加到sys.path
。它工作正常,但我想分發我的Python程序作爲運行__main__.py
的.zip文件。動態添加引用到.zip文件中的Python sys.path條目
我可以從zip文件中添加條目到sys.path
嗎?在搜索了一下後,我發現了pkgutil
documentation,但我無法弄清楚什麼會起作用。
注:的東西,我需要添加sys.path
包括.pyd
和.dll
文件爲Windows。
我有一個Python程序,它將動態添加到sys.path
。它工作正常,但我想分發我的Python程序作爲運行__main__.py
的.zip文件。動態添加引用到.zip文件中的Python sys.path條目
我可以從zip文件中添加條目到sys.path
嗎?在搜索了一下後,我發現了pkgutil
documentation,但我無法弄清楚什麼會起作用。
注:的東西,我需要添加sys.path
包括.pyd
和.dll
文件爲Windows。
我不能完全肯定我理解你的問題,但我會在回答反正它有裂紋......
不幸的是,當你從一個zip文件將其添加到sys.path
導入:
sys.path
包含提供 模塊和包的搜索位置的字符串列表。它是從PYTHONPATH 環境變量以及各種其他安裝和 實現特定的默認值初始化的。 條目在sys.path
可以命名文件系統上 目錄,zip文件,和潛在的其他 「位置」(見site
模塊)應搜索模塊, 如URL或數據庫查詢。sys.path
上只有字符串和字節應該是 ;所有其他數據類型都被忽略。 字節條目的編碼由各個path entry finders確定。來源:http://docs.python.org/3/reference/import.html#path-entry-finders
...這沒有延伸到.pyd
和.dll
文件:
任何文件可能存在於ZIP壓縮文件,但文件只
.py
和.py[co]
可供導入。 動態模塊的ZIP導入(.pyd
,.so
)是不允許的。
我不知道這種限制工作的任何方式。
有沒有很好的解決方法?例如如果我將.pyd和.dll文件解壓到某處並將它們添加到sys.path中,那麼在哪裏可以做到這一點?我不想修改默認的Python安裝,如果我運行.zip文件100次,我不希望它生成100個臨時目錄。 –
@JasonS我從來沒有開發專門爲Windows(也不是我的Windows用戶),但它看起來像[winpaths](http://ginstrom.com/code/winpaths。html)可能會有幫助 - 大概你會想要一個「應用程序數據」變種。順便找到[這裏](http://stackoverflow.com/q/626796/1014938)。 –
你不能執行zip文件...我不明白我認爲的問題 –
我以爲你不知道你在說什麼,直到我看到你的聲望。 –
你*可以*執行一個zip文件:http://bugs.python.org/issue1739468 –