【问题标题】:virtualenv: cannot access lib: No such virtualenv or site directoryvirtualenv:无法访问 lib:没有这样的 virtualenv 或站点目录
【发布时间】:2017-06-28 15:46:07
【问题描述】:

我正在使用谷歌云平台创建一个基于 Django 的 http API,它使用谷歌的云 SQL API 和机器学习 API。

我在我的电脑上制作了一个 django-mysql 应用程序,并且能够在 localhost 上成功测试它。我想将此应用部署到 Google Cloud。

以下是我的相关文件: app.yaml:-

runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static/
- url: .*
  script: mysite.wsgi.application

libraries:
- name: MySQLdb
  version: 1.2.5
- name: numpy
  version: "1.6.1"


skip_files:
- ^(.*/)?- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$
- ^env/.*$

appengine_config.py:-

from google.appengine.ext import vendor
import os
vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))

我在 api 主页上收到 500 错误。 here。我在仪表板上收到以下错误报告:-

Traceback (most recent call last):
  File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/lib_config.py", line 351, in __getattr__
    self._update_configs()
  File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/lib_config.py", line 287, in _update_configs
    self._registry.initialize()
  File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/lib_config.py", line 160, in initialize
    import_func(self._modname)
  File "/base/data/home/apps/b~neuralnet-171308/20170628t204601.402294282540056750/appengine_config.py", line 18, in <module>
    vendor.add('lib')
  File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/vendor/__init__.py", line 44, in add
    'No such virtualenv or site directory' % path)
ValueError: virtualenv: cannot access lib: No such virtualenv or site directory

appengine_config.py 最初包含:-

from google.appengine.ext import vendor

vendor.add('lib')

按照here的建议,我把它改成了当前文件。

我使用gcloud app deploy 部署我的项目。我不明白如何使用gcloud_sql_proxy 进行部署。

我肯定在app.yaml 的同一目录中有一个lib 文件夹。我不知道我做错了什么。任何帮助或建议表示赞赏。

【问题讨论】:

  • 您找到解决方案了吗?

标签: django google-app-engine google-cloud-sql


【解决方案1】:

前面提到的here 配置似乎是正确的。如示例app 所示,尝试使用 pip 安装依赖项:

pip install -t lib -r requirements.txt

【讨论】:

  • 我是在本地计算机上运行此命令还是需要在 App Engine 实例上运行?如果是后者,怎么办?
  • 这应该被标记为正确答案。太感谢了! @Code-Apprentice 你可以通过dev_appserver.py在你的本地机器上运行它
【解决方案2】:

在cloud shell的app根目录下运行以下命令并部署。

pip install -t lib -r requirements.txt

【讨论】:

    【解决方案3】:

    尝试添加

    libraries:
    - name: django
      version: "1.11"
    

    到您的 app.yaml 文件。

    【讨论】:

    • 这没有任何意义。我们在这里试图避免 libraries 并尝试使用 lib
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2012-05-06
    • 2014-10-24
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多