2017-08-25 108 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包的单独副本。 –