2017-08-25 112 views
0

我在Mac OS和谷歌的雲平臺開發。 我創建了vitualenv - virtualenv xyz。 我激活使用 - 源XYZ /斌/激活 然後,我安裝我所需要的PKG - pip install python-dateutil 當我做pip list,我確實看到了python-dateutil有 但是,當我使用dev_appserver.py .運行我的服務,並設法使一個職位請求。我收到ImportError: No module named dateutil.parser蟒蛇VIRTUALENV無模塊錯誤

問題:在我的appengine_config.py中,我有vendor.add('lib'),但軟件包安裝在my_project-> xyz -> lib -> python2.7 -> site-packages -> dateutil下。我的應用程序如何知道在哪裏查找包?

第二個問題:當我準備部署到生產,我怎麼部署的軟件包。 pip freeze > requirements.txt。這足以讓prod服務器知道要使用哪些軟件包。我需要在my_project下的lib文件夾嗎?我對包是如何在virtualenv和生產中被引用感到困惑。

回答

0

你混合安裝dependencing爲standard environment與那些爲flexible environment的說明。相關閱讀:How to tell if a Google App Engine documentation page applies to the standard or the flexible environment

您使用dev_appserver.py所以我假設你的應用程序是一個標準的環境中的一個,在這種情況下,你需要到圖書館安裝到您的應用程序(注意-t lib參數),而不是系統/ VENV 。假設你從你的應用程序的目錄執行:

pip install python-dateutil -t lib 
pip install python-dateutil -t lib 
+0

因此,如果我使用標準環境,每次啓動新項目時,如何安裝沒有安裝軟件包的新環境。基本上和virtualenv一樣。 –

+0

對不起,我不確定我是否收到你的問題。在stdenv中,你總是從沙盒提供的軟件包開始(在SDK的本地系統上)。任何額外需要添加到您的應用程序。 –

+0

在我的開發環境中,可以說我正在處理項目1並執行了'pip install python-dateutil'。我猜這是安裝在我的全球環境。我切換到項目2(仍在我的開發中),它將有權訪問全局包,但我不想在項目2中引用python-dateutil。如何爲每個項目保留python包的單獨副本。 –