我正在開發一個關於google appengine的twitter應用程序 - 爲此我想使用Twython庫。我嘗試使用pip來安裝它 - 但它要麼將其安裝在主python目錄中,要麼不導入所有依賴項。如何在特定目錄中安裝python包
我可以簡單地將Twython的所有文件複製到appengine根目錄,還手動導入所有依賴庫,但這似乎是非常錯誤的。如何在特定的文件夾中安裝軟件包,包括它的所有依賴項?
感謝
我正在開發一個關於google appengine的twitter應用程序 - 爲此我想使用Twython庫。我嘗試使用pip來安裝它 - 但它要麼將其安裝在主python目錄中,要麼不導入所有依賴項。如何在特定目錄中安裝python包
我可以簡單地將Twython的所有文件複製到appengine根目錄,還手動導入所有依賴庫,但這似乎是非常錯誤的。如何在特定的文件夾中安裝軟件包,包括它的所有依賴項?
感謝
如果將模塊文件放在一個目錄中,例如external_modules/
,然後使用sys.path.insert(0, 'external_modules')
,則可以將該模塊包含爲內部模塊。
您必須在第一次導入模塊之前調用sys.path.insert
。 例如:如果您在external_modules/
中放置了「module.pyd」,並且想要將其與import module
一起包含,請先放置sys.path.insert
。
sys.path.insert()
是一個應用程序範圍的調用,因此您只需調用它一次。在任何其他導入之前(當然除了import sys
),最好將它放在主文件中。
一堆謝謝! – MeLight
使用虛擬環境和虛擬環境的包裝,你不必使用包裝,但使用它的簡單..
如果您在使用PIP安裝包,試試這個:
Install a Python package into a different directory using pip?
我個人需要的庫ŧ我只是使用了git回購的帽子。我只是符號鏈接這些庫而不是安裝它們。但在那種情況下,我不得不手動符號鏈接所有的依賴關係。
我試着去關注那個解決方案,但是我覺得我錯過了一些東西我是一個python noob。我通過按照字面意思來回答這個錯誤:'ValueError:invalid variable'$'PREFIX_PATH'''。 對複雜依賴關係樹上的每個庫進行symlinking看起來像是一個非常難以擴展的解決方案:/ – MeLight
您可以指定實際路徑,而不是鍵入$'PREFIX_PATH'。這將安裝所有的包到指定的目錄。之後您可能需要使用其他問題中提到的sys.path.insert()技巧。確保你安裝的任何路徑都在你的GAE項目中! – dragonx
謝謝,我用'sys.path.insert()'解決方案。我覺得有點像輸入PREFIX_PATH:D – MeLight
您可以使用gaenv(我爲應用程序引擎構建的包管理器)。它只創建符號鏈接並遵循pip requirements.txt格式。您可以安裝&使用,如:
pip install gaenv
# create requirements.txt -> twython
pip install -r requirements.txt
gaenv
這將創建符號鏈接gaenv_lib所有所需的庫/。然後會要求添加導入語句。
如果你把它放在一個目錄中,例如'external_modules /',然後使用'sys.path.insert(0,'external_modules')',這是否行得通? – tobspr
@TobSpr是在項目的根目錄中嗎?我會在哪裏放置'sys.path.insert'調用? – MeLight
我沒有經驗的谷歌應用程序引擎,但你會在第一次導入模塊之前調用sys.path.insert。如果你在'external_modules /'中放置了一個「module.pyd」,並且想要做一個「導入模塊」,那麼先放置sys.path.insert。我不知道這是否也適用於谷歌應用程序引擎 – tobspr